使用字符串向量元素来引用 r 中的变量名称

use string vector elements to refer to variable names in r

我有一个字符串向量中的变量名称列表 v 和一个包含所有这些变量的数据 table my.dt

> v

[1] "var1" "var2" "var3"

我想使用名称在向量 v 中的那些变量,这样我就创建了新变量,即这 3 个变量的 cbind,或出现在 v 中的任意数量的名称,例如:

  new <- cbind(my.dt[,"var1"],my.dt[,"var2"],my.dt[,"var3"])
new1 <- rowSums(new, na.rm=TRUE) * ifelse(rowSums(is.na(new)) == ncol(new), NA, 1)

考虑到变量的数量不固定,所以我不想引用每个元素,例如 v[1]、v[2] 等,我怎么能得到这个

根据您的评论,您正在开发 data.table。您需要将 with = FALSE 添加到代码中,如下所示。

library(data.table)

my.dt <- data.table( ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c = 13:18 ) 
v <- c("a", "ID") 

my.dt[, v, with = FALSE]
#    a ID
# 1: 1  b
# 2: 2  b
# 3: 3  b
# 4: 4  a
# 5: 5  a
# 6: 6  c

请注意,如果您正在处理数据框,则不需要 with = FALSE

my.dt <- data.frame( ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c = 13:18 ) 
v <- c("a", "ID") 

my.dt[, v]
#   a ID
# 1 1  b
# 2 2  b
# 3 3  b
# 4 4  a
# 5 5  a
# 6 6  c