如何找到两列矩阵的sd?

时间:2014-10-05 22:22:40

标签: r matrix transpose

如果我有一个包含6个变量的矩阵,如果我想找到(col1和col1)的sd,(col1和col2),(col1和col6),......(col6和col6) ,并返回一个6 * 6矩阵。我应该使用什么功能? (sd:标准偏差)

非常感谢。

1 个答案:

答案 0 :(得分:1)

首先,创建一些样本数据

set.seed(1)
m <- replicate(6, rnorm(5)) # make a matrix with 6 columns

您可以使用expand.grid获取所有可能的组合,然后使用apply循环浏览所有组合。最后,将结果包装在matrix

matrix(apply(expand.grid(1:6, 1:6), 1, function(x) sd(m[, x])), ncol=6)
#              [,1]         [,2]        [,3]         [,4]         [,5]         [,6]
# [1,] 0.9060766593 0.7805859575 1.187979366 0.7326776974 1.0258159472 0.8334359580
# [2,] 0.7805859575 0.6305829418 1.095413861 0.5692800481 0.9169484342 0.6960691132
# [3,] 1.1879793664 1.0954138606 1.413152368 1.0695148355 1.2806974048 1.1228262280
# [4,] 0.7326776974 0.5692800481 1.069514836 0.4382343292 0.8814506207 0.7057912762
# [5,] 1.0258159472 0.9169484342 1.280697405 0.8814506207 1.1324043901 0.9556076127
# [6,] 0.8334359580 0.6960691132 1.122826228 0.7057912762 0.9556076127 0.6643807746