我在 R 中有两个列表,我想在矩阵中为不同的z
值创建结果。意味着最后我有 2 行 10 列的矩阵。
x = list(a = 1, b = 2, c = 3)
y = list(a = 4, b = 5, c = 3)
z = seq(0, 1, len = 10)
w = list(a1 = z * x$a + (1-z) * x$b + x$c , b1 = z * y$a + (1-z) * y$b + y$c)
如果没有 R 中的 for 循环,我怎么能做到这一点?
我在 R 中有两个列表,我想在矩阵中为不同的z
值创建结果。意味着最后我有 2 行 10 列的矩阵。
x = list(a = 1, b = 2, c = 3)
y = list(a = 4, b = 5, c = 3)
z = seq(0, 1, len = 10)
w = list(a1 = z * x$a + (1-z) * x$b + x$c , b1 = z * y$a + (1-z) * y$b + y$c)
如果没有 R 中的 for 循环,我怎么能做到这一点?
这样的事情怎么样(在编辑问题之前,x
长度y
为 2):
d <- list(x, y)
t(sapply(d, function(x) z*x$a + (1-z)*x$b))
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 2 1.888889 1.777778 1.666667 1.555556 1.444444 1.333333 1.222222 1.111111 1
## [2,] 5 4.888889 4.777778 4.666667 4.555556 4.444444 4.333333 4.222222 4.111111 4
rbind(unlist(x), unlist(y)) %*% rbind(z, 1-z, 1)