在循环中由R paste命令转置的参数

时间:2014-12-23 19:17:49

标签: r string for-loop

由于R中的neuralnet命令存在错误,我手动构建公式而不是使用'。'所有变量的表示法。在循环内部,粘贴函数转置“〜”和“y”,如下所示。

for(i in 1:3)
{
  f <- as.formula(paste(c("y",i,"~", paste(c("x1","x2"), collapse = " + ")), collapse=""))
  message(f)
}

产生

~y1x1 + x2
~y2x1 + x2
~y3x1 + x2

我尝试颠倒“〜”和“y”的顺序,但这会产生错误“意外符号”。所以问题是,我该怎么做:

y1~x1 + x2
y2~x1 + x2
y3~x1 + x2

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一种使用sapply循环生成5个公式对象的方法。注意:您当前的for - 循环将覆盖f - 值,因为您没有为分配编制索引:

sapply( paste("y",1:5,"~", paste(c("x1","x2"), collapse = " + "), 
                            sep="") , as.formula)

$`y1~x1 + x2`
y1 ~ x1 + x2
<environment: 0x121e1b668>

$`y2~x1 + x2`
y2 ~ x1 + x2
<environment: 0x121e1b668>

$`y3~x1 + x2`
y3 ~ x1 + x2
<environment: 0x121e1b668>

$`y4~x1 + x2`
y4 ~ x1 + x2
<environment: 0x121e1b668>

$`y5~x1 + x2`
y5 ~ x1 + x2
<environment: 0x121e1b668>

除了list-object之外,实际上没有任何其他结构,因为公式是语言结构,通常需要在列表或列表之类的结构中,并使用“[[”来访问它们的值。