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