如果我有一个包含6个变量的矩阵,如果我想找到(col1和col1)的sd,(col1和col2),(col1和col6),......(col6和col6) ,并返回一个6 * 6矩阵。我应该使用什么功能? (sd:标准偏差)
非常感谢。
答案 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