我这里有一个最小的样本数据来理解我的最终矩阵:
test <- list( c(1, 2, 3, 4) )
test2 <- list( c(2, 3) )
我的矩阵应该是:
2 4 6 8
3 6 9 12
它就像一个循环的nestes。我遍历每一行,并在每一行中使用它的值并将其与列值相加。
几个小时后,我有这个:sapply(2, function(j) lapply(seq_along(test), function(i) test[[i]] * test2[[i]][j]))
它给出了最终模拟的第二行:(在sapply之后行的参数为'2')
[[1]]
[1] 3 6 9 12
可以使用seq_along(test2)完成越过行,但我不知道如何在每行之后保存数据...我上次测试这个:..并且失败..
a=matrix(data=0, nrow=2, ncol=4)
lapply(seq_along(test2), function(k) a[k,]<-unlist(sapply(2, function(j) lapply(seq_along(test), function(i) test[[i]] * test2[[i]][j])) ) )
输出:
[1] 3 6 9 12
稍后,我想在输入列表中有更多向量,并重复在顶部描述的洞穴动作。
答案 0 :(得分:1)
你的意思是矩阵乘法?快速举例:
> t(matrix(unlist(test)) %*% matrix(unlist(test2), nrow = 1))
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 3 6 9 12
答案 1 :(得分:1)
我们可以在outer
unlist
list
t(outer(unlist(test), unlist(test2)))
# [,1] [,2] [,3] [,4]
#[1,] 2 4 6 8
#[2,] 3 6 9 12