【问题标题】:Creating a loop in R to apply the same functions to many similarly named variables在 R 中创建一个循环以将相同的函数应用于许多类似命名的变量
【发布时间】:2011-02-17 01:05:04
【问题描述】:

我正在使用具有非常相似名称的变量的数据集。我必须一次将相同的函数应用于所有 13 个变量,并且我试图缩短代码,而不是单独执行每个变量。

q01a.F=factor(q01a)
q01b.F=factor(q01b)
q01c.F=factor(q01c)
q01d.F=factor(q01d)
q01e.F=factor(q01e)
q01f.F=factor(q01f)
q01g.F=factor(q01g)
q01h.F=factor(q01h)
q01i.F=factor(q01i)
q01j.F=factor(q01j)
q01k.F=factor(q01k)
q01l.F=factor(q01l)
q01m.F=factor(q01m)

建议?

【问题讨论】:

    标签: r loops


    【解决方案1】:
    ## suppose dnow is the data.frame with your variables of interest
    dnow <- data.frame(q01a=rep(1,10), q01b=rep(2,10), q01c=rep(3,10), q02=rlnorm(10))
    ## we need to extract the variable names we need
    ## (they start with q01 and end with a, b or c
    ## dnow is your data.frame
    vnames <- grep("^q01[a-c]", names(dnow), value=TRUE) ## regular expression matching the names
    for (i in vnames) {
        dnow[,paste(i, ".F", sep='')] <- factor(dnow[,i]) 
    }
    

    【讨论】:

    • 谢谢!我正在解决这个问题。 vnames 是否应该是这些变量名称(q01_a...)所引用的 data.frame 中的列的向量?
    • > for(i in vnames){ + UNCA[,paste(i, ".F", sep='')]
    • @user335897 我的代码有错误。我忘记在 grep 语句中添加“value=TRUE”,所以它给了我们列号而不是名称。现在应该可以工作了。
    • Eduardo,vnames 现在是我感兴趣的 13 个变量的列表。 // 然而, // for (i in vnames) {// UNCA[,paste(i, ".F", sep='')]
    • Eduardo,vnames 现在是我感兴趣的 13 个变量的列表。但是,对于 (i in vnames) { UNCA[,paste(i, ".F", sep='')]
    【解决方案2】:

    听起来您才刚刚开始,所以是一般提示。为了使用提供的解决方案,您最好将其解压缩。 names(dnow) 有结果,自己看。 grep("^q01[a-m]", names(dnow)) 也有一个你应该自己看的结果。这些可能都在不同的行上,并保存在额外的变量中,以防您需要使其更具可读性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2021-06-14
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多