由于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
谢谢!
答案 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之外,实际上没有任何其他结构,因为公式是语言结构,通常需要在列表或列表之类的结构中,并使用“[[”来访问它们的值。