【发布时间】:2013-05-21 16:10:52
【问题描述】:
在给定具有多列的数据框的情况下,如何在 R 中以优雅的方式生成秩相关矩阵?我找不到内置函数,所以我尝试了
> test=data.frame(x=c(1,2,3,4,5), y=c(5,4,3,2,1))
> cor(rank(test))
(为简单起见只有 2 列,真实数据有 5 列)这给了
> Error in cor(rank(test)) : supply both 'x' and 'y' or a matrix-like 'x'
我认为这是因为 rank 采用单个向量。所以我尝试了
> cor(lapply(test,rank))
将排名应用于数据框中的每一列,将数据框视为列表,这会导致错误
> supply both 'x' and 'y' or a matrix-like 'x'
我终于得到了一些可以使用的东西
> cor(data.frame(lapply(test,rank)))
x y
x 1 -1
y -1 1
然而,这看起来相当冗长和丑陋。我在想一定有更好的方法——如果是这样呢?
【问题讨论】:
-
您的列表/数据框问题很可能通过使用
sapply来解决。 -
@joran 谢谢这符合 sapply 的帮助,它说它是 lapply 的简化版本,特别是如果可以的话,将结果作为矩阵返回。
标签: r