подстановка всех значений в фрейме данных с помощью разделителя

#r #dataframe #substr

#r #фрейм данных #substr

Вопрос:

Данные выглядят следующим образом

 > loc.dat[1:2,1:3]
              imageNumber.1             imageNumber.2             imageNumber.3
1         latitude=34.73388         latitude=34.73393    latitude=34.7339966667
2 longitude=-106.7133033333 longitude=-106.7128583333 longitude=-106.7123566667
 

Я пытался

 df <- unlist(strsplit(loc.dat, '=', fixed=TRUE))[2]
 

но это не работает из-за

 Error in strsplit(loc.dat, "=", fixed = TRUE) : non-character argument
 

Я пробовал lapply и цикл for, но он не работает. Я уверен, что это просто, но я раньше не сталкивался с этой проблемой.

У кого-нибудь есть лучшее решение для этого?

Комментарии:

1. Если вы не заботитесь о сохранении части перед «=», вы можете просто удалить текст перед «=», используя gsub и используя шаблон регулярных выражений «^. =»

Ответ №1:

strsplit не может быть применен непосредственно к фрейму данных. Вы можете использовать lapply для перебора столбцов. Вот метод с lapply и tstrsplit из data.table , предполагающий , что все столбцы относятся к классу символов, а не к фактору:

 library(data.table)
loc.dat[] = lapply(loc.dat, function(col) tstrsplit(col, "=")[[2]])
loc.dat
#    imageNumber.1   imageNumber.2   imageNumber.3
#1        34.73388        34.73393   34.7339966667
#2 -106.7133033333 -106.7128583333 -106.7123566667