回答:
適用関数の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
ます。代わりに、の各呼び出しでmyfxn
1st / 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
mapply
vars1
要素が1つしかない場合もリサイクルされます。たとえばvars1 <- 3
、 mapply(mult_one, vars1, vars2)
はを返します30 60 90
。これはlapply
、関数の2番目の引数に対して使用する場合に役立ちます。