私はvar2 = 1
を設定し、のリストに関数f()
を適用したいと考えていますが、関数にはf(var1, var2)
があります。基本的に私は、私はapply
、mapply
またはlapply
のいずれかでこれを行うにはどうすればよい複数のパラメータを持つR関数を適用する
[f(L[1],1),f(L[2],1),...,f(L[n],1)]
出力で新しいリストL *を取得したいですか?
私はvar2 = 1
を設定し、のリストに関数f()
を適用したいと考えていますが、関数にはf(var1, var2)
があります。基本的に私は、私はapply
、mapply
またはlapply
のいずれかでこれを行うにはどうすればよい複数のパラメータを持つR関数を適用する
[f(L[1],1),f(L[2],1),...,f(L[n],1)]
出力で新しいリストL *を取得したいですか?
apply関数の1つに余分な引数としてvar2を渡すだけです。
mylist <- list(a=1,b=2,c=3)
myfxn <- function(var1,var2){
var1*var2
}
var2 <- 2
sapply(mylist,myfxn,var2=var2)
これはmyfxn
のすべての呼び出しに同じvar2
を渡します。代わりに、myfxn
の各通話が1/2/3/etcを取得したい場合は、要素がmylist
とvar2
の場合、mapply
のドメインに属しています。
しかし、 'myfxn'が、その場合には、ベクトル化することができることに注意してください'myfxn(unlist(mylist)、var2 = var2) 'を使うべきです。 – baptiste
元の例は不明ですが、ベクトル化されていないようです。しかし、よく取られた点。 –
この作業を「オンザフライ」機能として機能させる方法はありますか?このような何か: 'sapply(mylistという、機能(VAR1、VAR2){ VAR1 * VAR2 }、VAR = thisvar2)' しかし、私はエラーを取得する引数2一致していることを複数の仮引数私はそこに問題を考える – emudrak
あなたの関数は次のようにmapply
を使用することができます(@Ari B.フリードマンで述べたように)2つのベクトル変数を持ち、それらの各値に自分自身を計算しなければならない場合:
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がhrTableNamesの各行に機能noOfRecordsを適用し、その作業を行うように、RはhrTableNamesの現在の反復値が欠落しているパラメータtableNameのを代入します。
最後に、
> barplot(t(x), las=2)
同様の質問:http://stackoverflow.com/questions/2545879/row-column-counter-in-apply-functions/28102021#28102021 –