使用字符串向量元素来引用 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
我有一个字符串向量中的变量名称列表 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