df
8列のデータフレーム( )があります。for
次の方法で、ループを使用して、選択した列のピアソン相関を計算したいと思います。
cor1=cor(df[,1], df[,2])
cor2=cor(df[,3], df[,4])
等々。これを行うための最良の方法は何ですか?
df
8列のデータフレーム( )があります。for
次の方法で、ループを使用して、選択した列のピアソン相関を計算したいと思います。
cor1=cor(df[,1], df[,2])
cor2=cor(df[,3], df[,4])
等々。これを行うための最良の方法は何ですか?
最も簡単なのは、相関行列を計算することです。その後、必要に応じてインデックスを付けることができます。
df <- data.frame(rnorm(10),rnorm(10),rnorm(10))
corMat <- cor(df)
たとえば、変数 1 と 2 の間の相関:
corMat[1,2]
それとも、個別のオブジェクトに特定の相関関係を持たせる必要がありますか?
必要なものの for ループの例を次に示します。
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]))
}
それは非常に非効率的ですが。
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
適用関数内で列/行IDを取得するR関数があるかもしれませんか? その場合、列 ID を再バインドする必要はありません。