R 按分隔符对数据帧中的所有值进行子集设置

R 按分隔符对数据帧中的所有值进行子集设置,r,dataframe,substr,R,Dataframe,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 longitu

数据看起来像

> 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]
我试过lappy和for循环,但不起作用。我相信这很简单,但我以前从未遇到过这个问题


有人有更好的解决方案吗?

strsplit
不能直接应用于数据帧。您可以使用
lappy
在列中循环。下面是一个使用
数据中的
lappy
tstrsplit
的方法。表
,假设所有列都是字符类而不是因子:

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

如果您不关心将部分存储在“=”之前,那么只需使用gsub和regex模式“^.+=”删除“=”之前的文本即可
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