【问题标题】:How to call variables from a list of variable names in R如何从R中的变量名列表中调用变量
【发布时间】:2014-03-03 19:10:27
【问题描述】:

我有变量名列表。

list = c("smoke", "ptd", "ht", "ui", "racecat", "visit")

我想做一系列这样的情节。

plot(low[somevariable=="0"] ~ age[somevariable=="0"])

我想用列表中的每个变量名替换一些变量。例如,

plot(low[smoke=="0"] ~ age[smoke=="0"])
plot(low[ptd=="0"] ~ age[ptd=="0"])
......
plot(low[visit=="0"] ~ age[visit=="0"])

我尝试过创建一个for循环并使用各种东西来替换一些变量,例如

list[i], paste(list[i]), substitute(list[i]), parse(list[i])

但它们都不起作用。我真的很感激一些帮助。提前致谢。

【问题讨论】:

标签: r variables call


【解决方案1】:

你可以试试:

for(i in list) {
  print(plot(low[get(i) == 0] ~ low[get(i) == 0]))
}

【讨论】:

  • get(list[i]) 等价于 eval(parse(text=list[i]),但要简单得多。我会选择 BrodieG!
【解决方案2】:

这是您想要做的一个简单的例子。您可以使用get 查找相关的命名变量:

set.seed(1)
x <- rnorm(100)
y <- rnorm(100)
a <- rnorm(100)
b <- rnorm(100,10)
l <- c('a','b')
# histogram of one variable:
hist(get(l[1]))
# loop of plots more like what you're going for:
for(i in 1:length(l)) plot(y[get(l[i])<2] ~ x[get(l[i])<2])

【讨论】:

    【解决方案3】:

    找到解决方案:

    eval(parse(text=list[i]))
    

    还有一篇文章解决了同样的问题:

    Getting strings recognized as variable names in R

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2021-03-02
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多