8列のデータフレーム(df
)があります。forループを使用したdfの列の選択の相関
cor1=cor(df[,1], df[,2])
cor2=cor(df[,3], df[,4])
など:私は、列の選択については、以下の方法をピアソン相関を計算するfor
ループを使用したいと思います。これを行う最善の方法は何ですか?
8列のデータフレーム(df
)があります。forループを使用したdfの列の選択の相関
cor1=cor(df[,1], df[,2])
cor2=cor(df[,3], df[,4])
など:私は、列の選択については、以下の方法をピアソン相関を計算するfor
ループを使用したいと思います。これを行う最善の方法は何ですか?
最も簡単にあなたが望むならば、あなたは、インデックス、それをすることができ、単に相関行列を計算することである:あなたが本当に
corMat[1,2]
かの操作を行います、例えば
df <- data.frame(rnorm(10),rnorm(10),rnorm(10))
corMat <- cor(df)
変数1と2の間の相関関係別々のオブジェクトに特定の相関関係を持たせる必要がありますか?
df <- data.frame(rnorm(10),rnorm(10),rnorm(10),rnorm(10))
for (i in seq(1,ncol(df),by=2))
{
assign(paste("cor",i/2+0.5,sep=""),cor(df[,i],df[,i+1]))
}
それは非常に非効率的であるけれども:
は、あなたが何をしたいのforループの例です。
あなたは一般的な機能でapply
を使用することができます。
df<-data.frame(a=rnorm(10),b=rnorm(10),c1=rnorm(10),d=rnorm(10))
f<- function(x) {
cc=x[1] #column index
if (cc<ncol(df)){
cor(x[-1],df[,cc+1]) #ignore 1st element [-1]
}
}
apply(rbind(1:dim(df)[2], 2, f) #apply over columns after adding a column id numbers at the top row
はR関数は関数を適用内側の列/行IDを取得することがあるかもしれませ?その場合、列IDをRbindする必要はありません。
Hallo Sascha、ご意見ありがとうございました。しかし、それは変数の各対の相関を計算するfor-loopでなければならない。 1)cor1 = cor(col1、col2)、cor2 = cor(col3、col4)など。 –
なぜforループでなければならないのですか?これはRのプログラミングが非常に非効率的です。これが宿題の割り当てであれば、そのようにタグ付けしてください。とにかく、それを行う方法を編集しました。 –