【发布时间】:2016-06-01 15:37:13
【问题描述】:
假设我有一个包含 3 个元素的列表,每个元素是一个包含 2 个其他元素的列表。第一个是 4 维向量,第二个是 char。以下代码将生成一个与我刚才描述的完全相同的列表:
x <- NULL
for(i in 1:3){
set.seed(i); a <- list(sample(1:4, 4, replace = T), LETTERS[i])
x <- c(x, list(a))
}
它的结构是以下类型的(由于我使用了示例函数,确切的值可能会有所不同):
> str(x)
List of 3
$ :List of 2
..$ : int [1:4] 2 2 3 4
..$ : chr "A"
$ :List of 2
..$ : int [1:4] 1 3 3 1
..$ : chr "B"
$ :List of 2
..$ : int [1:4] 1 4 2 2
..$ : chr "C"
现在,我有另一个 4 维向量,比如 y:
y <- 1:4
最后,我想创建一个矩阵,该矩阵由y 和存储在列表中的每个 4 维向量之间的运算(比如总和)产生。对于给定的示例,此矩阵将给出以下结果:
[,1] [,2] [,3]
[1,] 3 2 2
[2,] 4 5 6
[3,] 6 6 5
[4,] 8 5 6
问题:如何以简单优雅的方式创建上述矩阵?我正在寻找一些可以使用apply 函数或可以以某种我不知道的方式直接使用sum 函数的解决方案。
【问题讨论】:
-
@Zheyuan 我想将种子设置在循环内部(而不是外部)没有好处。