在循环中粘贴一个字符串

时间:2014-10-30 14:54:32

标签: r string loops

我正在为循环编写一些代码,我想在循环中粘贴一个字符串。但是,出于某种原因,命令"粘贴"似乎不起作用:

一个简单的例子:

### Creating some variables
test1<-c(1,2,3,4,5,6,7,8,9,10)
test2<-c(4,6,7,2,5,3,6,2,7,1)
test3<-c(3,5,6,7,7,7,7,3,5,3)

### An example of a loop
for (i in 1:2)
{
   name<-paste("test",i,sep="")
   fit <- lm(name~test2+test3)
}

我不明白为什么会这样:

fit <- lm(test1~test2+test3)

但这并不是:

fit <- lm(name~test2+test3)

即使粘贴等于test1。

非常感谢任何帮助。理想情况下,我想使用循环而不是应用。

2 个答案:

答案 0 :(得分:5)

首先,将您的矢量放在data.frame中。其次,在这个例子中你不需要循环。

DF <- data.frame(test1,
                 test2,
                 test3)

fits <- lm(do.call(cbind, DF[, 1:2]) ~ test2 + test3, data=DF)
#Coefficients:
#                  test1       test2     
#(Intercept)   7.655e+00   1.123e-15
#test2        -3.669e-01   1.000e+00
#test3        -1.089e-01   3.594e-17

请注意test2的结果与lm(test2 ~ test2 + test3)不同,因为RHS上的响应变量未被删除。

答案 1 :(得分:3)

get返回命名对象的值:

fit2 <- lm(get(name)~test2+test3)