1

ユーザーが作成した関数を、データセット内の選択した変数の組み合わせに適用する必要があります。

簡単な例:

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) に適用できますか?

4

1 に答える 1

0

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
于 2013-05-01T12:11:07.133 に答える