多くの列を持つデータフレームを指定して、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
ただし、これはかなり冗長で醜いようです。もっと良い方法があるに違いないと思っています。