在R中使用子集函数时如何忽略大小写?
eos91corr.data <- subset(test.data,select=c(c(X,Y,Z,W,T)))
我想选择名称为 x、y、z、w、t 的列。我该怎么办?
谢谢
最佳答案
如果没有 subset()
也能活下去函数,tolower()
功能可能工作:
dat <- data.frame(XY = 1:5, x = 1:5, mm = 1:5,
y = 1:5, z = 1:5, w = 1:5, t = 1:5, r = 1:5)
dat[,tolower(names(dat)) %in% c("xy","x")]
但是,这将返回
data.frame
列按照它们在原始数据集中的顺序dat
: 两个都dat[,tolower(names(dat)) %in% c("xy","x")]
和
dat[,tolower(names(dat)) %in% c("x","xy")]
将产生相同的结果,尽管目标名称的顺序已颠倒。
如果希望结果中的列按照目标向量的顺序排列,则需要稍微花哨一些。以下两个命令都返回
data.frame
列按目标向量的顺序排列(即,结果将不同,列切换):dat[,sapply(c("x","xy"),FUN=function(foo)which(foo==tolower(names(dat))))]
dat[,sapply(c("xy","x"),FUN=function(foo)which(foo==tolower(names(dat))))]
关于r - 在 R 中使用子集时如何忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13368695/