R应用具有多个参数的function
我在R中有一个函数f(var1, var2)
。假设我们设置var2 = 1
,现在我想将函数f()
到列表L
。 基本上我想要得到一个新的列表L *与输出
[f(L[1],1),f(L[2],1),...,f(L[n],1)]
我如何做到这一点,无论是apply
, mapply
或lapply
?
只要将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
调用来获得第一/第二/第三/等。 mylist
和var2
元素,那么你是在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)