我在R中具有功能f(var1, var2)
。假設我們設置了var2 = 1
,現在我想將函數f()
應用於列表L
。基本上,我希望得到一個新的列表L *與輸出具有多個參數的R應用功能
[f(L[1],1),f(L[2],1),...,f(L[n],1)]
如何做到這一點無論是與apply
,mapply
或lapply
?
我在R中具有功能f(var1, var2)
。假設我們設置了var2 = 1
,現在我想將函數f()
應用於列表L
。基本上,我希望得到一個新的列表L *與輸出具有多個參數的R應用功能
[f(L[1],1),f(L[2],1),...,f(L[n],1)]
如何做到這一點無論是與apply
,mapply
或lapply
?
只需將var2作爲額外參數傳遞給其中一個應用函數即可。
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
的域名。
如果你的函數有兩個向量變量(如@Ari B.弗裏德曼提到的)必須計算本身對他們的每一個值,你可以使用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架構。我需要一個可以返回表中記錄數的函數。所以...
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取代與hrTableNames的當前迭代值缺失的參數表名。
最後。
> barplot(t(x), las=2)
類似的問題:http://stackoverflow.com/questions/2545879/row-column-counter-in-apply-functions/28102021#28102021 –