R应用具有多个参数的function

我在R中有一个函数f(var1, var2) 。假设我们设置var2 = 1 ,现在我想将函数f()到列表L 。 基本上我想要得到一个新的列表L *与输出

 [f(L[1],1),f(L[2],1),...,f(L[n],1)] 

我如何做到这一点,无论是applymapplylapply

只要将var2作为额外parameter passing给其中一个应用函数。

 mylist <- list(a=1,b=2,c=3) myfxn <- function(var1,var2){ var1*var2 } var2 <- 2 sapply(mylist,myfxn,var2=var2) 

这将相同的var2传递给myfxn每个调用。 如果你想要每一个myfxn调用来获得第一/第二/第三/等。 mylistvar2元素,那么你是在mapply的领域。

如果你的函数有两个向量variables,并且必须计算它们的每一个值(如@Ari B. Friedman所提到的),你可以使用如下的mapply

 vars1<-c(1,2,3) vars2<-c(10,20,30) mult_one<-function(var1,var2) { var1*var2 } mapply(mult_one,vars1,vars2) 

这给你:

 > mapply(mult_one,vars1,vars2) [1] 10 40 90 

我使用RODBC连接到Oracle XE hr架构。 我需要一个可以返回表中logging数的函数。 所以…

 function(rodbcConnection, schemaName, tableName){ results <- sqlQuery(rodbcConnection, paste("SELECT * FROM ", schemaName, ".", tableName)) return(dim(results)[1]) } 

但是如何将这个应用到一个表名向量? 就是这样。

 > x <- sapply(hrTableNames, noOfRecords, rodbcConnection=connection, schemaName="hr") 

当sapply完成它的工作时,将函数noOfRecords应用于hrTableNames的每一行,R用当前迭代值hrTableNamesreplace缺less的参数tableName。

最后。

 > barplot(t(x), las=2)