【发布时间】:2013-06-29 16:28:39
【问题描述】:
让你有如下数组
vec_1 <- c('a','b','c')
vec_2 <- c('d','e','f')
vec_3 <- c('g','h','i')
vec_4 <- c('l','m','n')
在矩阵X 中,像这样:
X <- matrix(c(vec_1, vec_2, vec_3, vec_4), nrow = 3, byrow = FALSE)
等于
> X
[,1] [,2] [,3] [,4]
[1,] "a" "d" "g" "l"
[2,] "b" "e" "h" "m"
[3,] "c" "f" "i" "n"
我想使用for() 循环来获得以下矩阵D:
D <- matrix(c('a - d', 'b - e', 'c - f',
'a - g', 'b - h', 'c - i',
'a - l', 'b - m', 'c - n',
'd - g', 'e - h', 'f - i',
'd - l', 'e - m', 'f - n',
'g - l', 'h - m', 'i - n'),
nrow = 3, byrow = FALSE)
如您所见,由每个X 列的交叉差异组成:
> D
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a - d" "a - g" "a - l" "d - g" "d - l" "g - l"
[2,] "b - e" "b - h" "b - m" "e - h" "e - m" "h - m"
[3,] "c - f" "c - i" "c - n" "f - i" "f - n" "i - n"
在我的基本问题中,每个字母都是一个数值。
如何使用for() 循环来实现此结果?
如果对回答问题有用,请用随机数替换每个字母,您无需为paste()发疯!
【问题讨论】:
-
你只是想得到
paste("column", 1:N)吗? -
如果你定义了你需要这样一个解决方案的潜在问题,你可能会得到一个很好的答案。就其本身而言,@Thomas 已经告诉了你所有你需要知道的......(
paste("column", 1:(N+3))) -
我不是,因为根据我的计算,标有
"column x"的行数应该是N * (N - 1) / 2。 -
那你的问题还不清楚。例如,它提到了矩阵,但没有提供任何矩阵。
-
好的,我将编辑问题向您展示整个问题。