回答:
適用関数の1つに追加の引数としてvar2を渡すだけです。
mylist <- list(a=1,b=2,c=3)
myfxn <- function(var1,var2){
var1*var2
}
var2 <- 2
sapply(mylist,myfxn,var2=var2)
これはのvar2すべての呼び出しに同じことを渡しmyfxnます。代わりに、の各呼び出しでmyfxn1st / 2nd / 3rd / etcを取得したい場合。両方の要素mylistとvar2、その後、あなたがにいるmapplyのドメイン。
myfxnケース1は、使用すべきでベクトル化することができる、myfxn(unlist(mylist), var2=var2)
sapply(mylist, function(var1, var2) { var1*var2 }, var=thisvar2)ですが、引数2が複数の正式な引数と一致するというエラーが発生します
varなく、名前を付けているということですvar2。Rはあなたが何を意味するのかを理解できません。
関数に2つのベクトル変数があり、その値ごとに計算する必要がある場合(@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
mapplyvars1要素が1つしかない場合もリサイクルされます。たとえばvars1 <- 3、 mapply(mult_one, vars1, vars2)はを返します30 60 90。これはlapply、関数の2番目の引数に対して使用する場合に役立ちます。