在data.frame中查找部分匹配的名称时,需要对其进行排序
我想在给定一系列(部分)变量名的在data.frame中查找部分匹配的名称时,需要对其进行排序,r,R,我想在给定一系列(部分)变量名的data.frame中查找变量索引。例如: df <- data.frame(var = c("az","bz","cz"), stringsAsFactors = FALSE) 这在第一个示例中有效。对于第二个示例,此操作失败: v <- c("b > a") df$var[grep(paste(trimws(unlist(strsplit(v, ">"))), collapse = "|"), df$var)] [1] "az" "b
data.frame
中查找变量索引。例如:
df <- data.frame(var = c("az","bz","cz"), stringsAsFactors = FALSE)
这在第一个示例中有效。对于第二个示例,此操作失败:
v <- c("b > a")
df$var[grep(paste(trimws(unlist(strsplit(v, ">"))), collapse = "|"), df$var)]
[1] "az" "bz"
v如果不通过正则表达式(b | a
)进行操作,并将它们作为从strsplit()
函数派生的向量,即c(2,1)
,那么通过循环并使用grep
,您可以得到正确的顺序,即
df$var[sapply(trimws(unlist(strsplit(v, ">"))), function(i)grep(i, df$var))]
#[1] "bz" "az"
如果您不通过正则表达式(b | a
)执行此操作,并将它们作为从strsplit()
函数派生的向量,即c(2,1)
,那么通过循环并使用grep
,您可以获得正确的顺序,即
df$var[sapply(trimws(unlist(strsplit(v, ">"))), function(i)grep(i, df$var))]
#[1] "bz" "az"
df$var[sapply(trimws(unlist(strsplit(v, ">"))), function(i)grep(i, df$var))]
#[1] "bz" "az"