我有一个df
包含 8 列的数据框 ( )。我想使用for
循环来计算选择列的 Pearson 相关性,方法如下:
cor1=cor(df[,1], df[,2])
cor2=cor(df[,3], df[,4])
等等。做这个的最好方式是什么?
我有一个df
包含 8 列的数据框 ( )。我想使用for
循环来计算选择列的 Pearson 相关性,方法如下:
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
可能有一个 R 函数来获取应用函数中的列/行 ID?在这种情况下,我们不需要 rbind 列 ID。