在R中创建一个循环,将相同的函数应用于许多类似命名的变量

时间:2010-05-07 23:18:49

标签: r loops

我正在使用具有非常相似名称的变量的数据集。我必须一次对所有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)

建议?

2 个答案:

答案 0 :(得分:4)

## 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]) 
}

答案 1 :(得分:1)

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