2014-02-06 52 views
1

這可能是非常基本的,但我無法在線找到解決方案。 簡化,我想要做的事實質上是使用一個向量作爲一個函數的多個輸入變量的集合。R中的多個變量作爲矢量輸入

想象的簡單功能

fun1<-function(a,b,c,d) { 
a+b+c+d 
} 

inp<-c(1,2,3,4) 

顯然,這並不工作,但我想要的東西等同於寫

fun1(inp) 

mapply (fun1, inp) 

給我的結果(10在這種情況下)

有沒有可能的方法來做到這一點?

感謝 塞巴斯蒂安

編輯

我想避免手動輸入他們......因爲我在做遺傳程序,並希望能夠改變的變量的數目函數進入而不需要手動合併變量。

我想我可以生成一個變化的輸入向量來使用。

fitnessFunction1 <- function(f){ 
    for(k in 1:N) { 
    meanerrors[k] <- rmse(mapply(f, input1[k,1], input1[k,2], input1[k,3], input1[k,4], input1[k,5]), output1[k]) 
    }} 

不想寫的所有輸入1在那裏,但創建一個用於創建矢量

回答

1
fun1<-function(x) { 
sum(x) 
} 

inp<-c(1,2,3,4) 
fun1(inp) 

或循環,如果你有不同的使用它們,

使用

a<-x[1] 
b<-x[2] 
....... 

內函數

,或者 與原有的功能,

do.call(fun1, as.list(inp)) 
+0

我想避免手動輸入他們......因爲我在做遺傳程序,並希望能夠改變功能的變量去數無需手動合併變量。 我以爲我可以生成一個變化的輸入矢量來以某種方式使用。對於(k in 1:N)函數1(函數(f)){函數1 [k,2],input1 [k ,3],input1 [k,4],input1 [k,5]),output1 [k]) }} 不想寫入所有input1,但創建一個循環創建矢量 – Stayhannebo

+0

使用'do.call'編輯版本 – Ananta