【问题标题】:using a character vector with with()使用带有 with() 的字符向量
【发布时间】:2014-01-28 18:39:01
【问题描述】:

我正在尝试创建一个巨大的汇总表,并希望遍历一组变量并创建简单的频率。有多种变量(例如年龄、性别),但它们都将被一分为二。我尝试创建变量的字符向量及其二分法(下面的“vars”),然后使用 with 将它们应用于数据。可悲的是,这不起作用。

vars = c("SEX=='M'",'BMI<25')
data = data.frame(SEX=c('M','F','M'), BMI=c(10,20,30)) # dummy data
for (this.var in vars){
   true.false.var = with(data,this.var)
   tab = table(true.false.var)
}

【问题讨论】:

    标签: r loops character


    【解决方案1】:

    试试

    vars = c("SEX=='M'",'BMI<25')
    data = data.frame(SEX=c('M','F','M','M'), BMI=c(10,20,30,40)) # dummy data
    lapply(vars, function(x) {
      with(data, table(eval(parse(text=x))))
    })
    # [[1]]
    # 
    # FALSE  TRUE 
    # 1     3 
    # 
    # [[2]]
    # 
    # FALSE  TRUE 
    # 2     2
    

    他们的关键是在你的代码中使用tab = with(data, table(eval(parse(text=true.false.var))))。 eval(parse()) 告诉 R 字符串是一个表达式。如果没有with(data, ...) 语句,R 将搜索名为SEX 和BMI 的对象,它们在环境中不可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多