【问题标题】:use string vector elements to refer to variable names in r [duplicate]使用字符串向量元素来引用r中的变量名[重复]
【发布时间】:2018-10-13 22:35:17
【问题描述】:

我有一个字符串向量v 中的变量名列表和一个包含所有这些变量的数据表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] 等。

【问题讨论】:

  • 也许是my.dt[, v] ?
  • 我认为它不起作用...
  • 而且你没有提供可重现的例子,所以我唯一能做的就是猜测。
  • 例如,这个小例子对我产生了同样的错误:my.dt = data.table( ID = c("b","b","b","a"," a","c"), a = 1:6, b = 7:12, c = 13:18 ) v
  • 没有人知道你正在处理data.table,因为你没有提到它。你的帖子质量很差。下次请提供相关信息和可复现的例子,以便其他人更好地帮助您。

标签: r string paste


【解决方案1】:

根据您的评论,您正在处理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

【讨论】:

    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多