在r中使用函数中的多个变量

时间:2014-07-23 21:24:21

标签: r function

我有这个功能

ANN<-function (x,y){
DV<-rep(c(0:1),5)
X1<-c(1:10)
X2<-c(2:11)
ANN<-neuralnet(x~y,hidden=10,algorithm='rprop+')
return(ANN)
}

我需要像

一样运行的功能
    formula=X1+X2
    ANN(DV,formula)

并获得该函数的结果。所以问题是说函数使用在函数运行期间创建的对象。我需要通过lapply运行x,y的更多组合,所以我需要这样。有什么建议如何实现呢?感谢

2 个答案:

答案 0 :(得分:0)

我已经编辑了我的答案,这对我来说仍然有用。对你起作用吗?你能具体说明你遇到了什么样的错误吗?

新回复:

ANN<-function (y){
    X1<-c(1:10)
    DV<-rep(c(0:1),5)
    X2<-c(2:11)
    dat <- data.frame(X1,X2)
    ANN<-neuralnet(DV ~y,hidden=10,algorithm='rprop+',data=dat)
    return(ANN)
    }

formula<-X1+X2
ANN(formula)

答案 1 :(得分:0)

如果您需要,请分别指定公式的两个部分,您仍应将它们作为公式传递。

library(neuralnet)
ANN<-function (x,y){
    DV<-rep(c(0:1),5)
    X1<-c(1:10)
    X2<-c(2:11)
    formula<-update(x,y)
    ANN<-neuralnet(formula,data=data.frame(DV,X1,X2),
         hidden=10,algorithm='rprop+')
    return(ANN)
}

ANN(DV~., ~X1+X2)

假设您使用neuralnet()库中的neuralnet,似乎data=是必需的,因此您需要传入一个data.frame那些专栏。

公式为特殊,因为除非明确要求,否则不会对它们进行评估。这与仅使用符号不同,只要您使用它就会在适当的帧中评估某些符号。这意味着DV(a&#34; name&#34;)和DV~.(公式)之间存在很大差异。后者更安全地传递给函数并在不同的上下文中进行评估。使用符号/名称会变得更加棘手。