#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