ユーザーが作成した関数を、データセット内の選択した変数の組み合わせに適用する必要があります。
簡単な例:
x<-c(1:10)
y<-c(10:1)
z<-rep(2,10)
w<-cbind(x,y,z)
myfun<-function (a,b){
c<-a*b
return(c)}
どうすれば myfun を (x,y) と (x,z) に適用できますか?
ユーザーが作成した関数を、データセット内の選択した変数の組み合わせに適用する必要があります。
簡単な例:
x<-c(1:10)
y<-c(10:1)
z<-rep(2,10)
w<-cbind(x,y,z)
myfun<-function (a,b){
c<-a*b
return(c)}
どうすれば myfun を (x,y) と (x,z) に適用できますか?
myfun( w[,"x"] , w[,"y"] )
またはを使用しmyfun( w[,"x"] , w[,"z"] )
ます。演算子は、リストの$
単一の要素を選択するために使用されるため、上に投稿したデータでは機能しません (それがあなたがやろうとしていたことかどうかはわかりません) (adata.frame
は実際にはベクトルのリストであり、おそらく異なるクラス (例えばnumeric
またはcharacter
) ですが、あなたが持っているのは ですmatrix
. 行列から選択するリスト要素はありません. 行列は 2 次元ベクトルです:
x <- 1:10
x
# [1] 1 2 3 4 5 6 7 8 9 10
dim(x) <- c(5,2)
x
# [,1] [,2]
#[1,] 1 6
#[2,] 2 7
#[3,] 3 8
#[4,] 4 9
#[5,] 5 10
colnames(x) <- c( "A" , "B" )
x$A
Error in x$A : $ operator is invalid for atomic vectors
x[,"A"]
# [1] 1 2 3 4 5
ただし、必要に応じて に変換し、適切な列を選択するためにdata.frame
使用できます。$
x <- as.data.frame(x)
x$A
# [1] 1 2 3 4 5