r - 计算一列与选择的其他列之间的相关性,无需循环

标签 r

w= as.numeric()
for(i in 2:10)){
    w[i] = cor(a[,1], a[,i], method = "pearson", use = "complete.obs")
 }

是否有办法将以下 for 循环转换为一行代码,如下所示?

w[1:9] = cor(a[,1], a[,i], method = "pearson", use = "complete.obs")

最佳答案

关于:

w = sapply(c(2:10), function(x) cor(a[,1], a[,x], method = "pearson", use = 'pairwise.complete.obs') )

假设您使用 2:10 的原因是因为有 10 列。如果是这种情况并且您希望它更加动态:

w = sapply(c(2:ncol(a)), function(x) cor(a[,1], a[,x], method = "pearson", use = "complete.obs") )

最后,如果您不想使用 apply 系列,您可以生成整个 cor 矩阵并从第一行中提取您需要的内容:

w = cor(a, method = 'pearson', use = 'pairwise.complete.obs')[1,-1]

可重现的示例:

> a = iris[,1:4]
> cor(a, method = 'pearson', use = 'pairwise.complete.obs')[1,-1]
 Sepal.Width Petal.Length  Petal.Width 
 -0.1175698    0.8717538    0.8179411 

编辑: 如果您想检索不同列的相关性(例如 2):

> cor(a, method = 'pearson', use = 'pairwise.complete.obs')[2,-2]
Sepal.Length Petal.Length  Petal.Width 
-0.1175698   -0.4284401   -0.3661259 

此外,根据 Joris Meys 的建议,请确保使用 'pairwise.complete.obs'

关于r - 计算一列与选择的其他列之间的相关性,无需循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317936/

相关文章:

R:从具有重复制表符的制表符分隔文件中读取数据

r - 如何计算 R 中随机森林回归模型的置信度

r - 如何使用ggplot2的x轴日期注释?

r - R Shiny :删除ggplot2背景以使其透明

r - 如何在R中的一张图中放置多条时间序列线?

r - 负索引子集 : best practices?

r - 根据向量中*不*的列选择 R 数据框中的列

r - 使用 facet_wrap () 绘制多个条形图

ggplot2 中的旋转和间距轴标签

r - 使用 ggplot2 进行元编程