我们从一组矩阵开始。参考集合中的所有矩阵,我想创建一个新的矩阵,它表示集合中每个矩阵的列的组合。
集合中的每个矩阵具有不同的行数。当我们组合矩阵时,新行应该用NA填充。新矩阵获取集合中每个矩阵的前3个非NA列并将它们联接起来。
设置
set.seed(4)
mat1 <- matrix(nrow =9, ncol=9, runif(81))
mat2 <- matrix(nrow=10, ncol =9, runif(90))
mat3 <- matrix(nrow=11, ncol =9, runif(99))
mat4 <- matrix(nrow =9, ncol=9, runif(81))
mat2[,1:3] <- NA
mat3[,1:5] <- NA
mat4[,1:4] <- NA
mat_set <- list(mat1,mat2,mat3, mat4)
新矩阵:
绑定:
mat1[,1:3], mat2[,6:9], mat3[,6:9], mat4[,5:8]
我希望新矩阵的行数与集合中最大的矩阵的行数相同(在本例中,nrow=11)。当集合中的矩阵行不等于11时,用NA填充它们的条目。因此,对于Mat1,将目前不存在的第10行和第11行设为所有列的NA。此步骤必须在将矩阵绑定在一起之前进行。
输出形式:理想情况下,我希望代码自动检测集合中矩阵的NA列,然后连接前3个非NA列。此外,它是否可以处理大量矩阵/数据。那太好了。谢谢
输出的形式应为:
cbind.fill(mat1[,1:3], mat2[,7:9], mat3[,7:9], mat4[,7:9], fill= NA)
但不应该手动键入集合中的每个矩阵。
我们可以使用lappy
循环遍历矩阵列表,选择前3列中的非NA值,然后使用do。调用
以应用cbind。将
填入列表。
do.call(rowr::cbind.fill, c(lapply(mat_set, function(x)
x[, head(which(apply(!is.na(x), 2, any)), 3)]), fill = NA))
或者使用colSums
do.call(rowr::cbind.fill, c(lapply(mat_set, function(x)
x[, head(which(colSums(is.na(x)) != nrow(x)), 3)]), fill = NA))
我正在寻找一种通用的方法来组合两个矩阵,以便两个初始矩阵中的列在新矩阵中交替出现 col1m1。。。col1m2。。。col2m1。。。二氧化碳。。。col3m1。。。col3m2。。。。。。 例如: 我正在寻找一种通用的方法,因为我将有多于3列的矩阵组合。我尝试了一些for循环和一些if语句,但对我来说,它们并没有真正结合在一起。将矩阵与洗牌和交替相结合的搜索也没有被证明是有效的。有什么想法吗?
问题内容: 这里是问题:我有一个元组列表(也可以根据需要设置)。例如: 我想找到一个清单 因为一旦将所有集合放在一起,交集就不会为空。 举个例子 结果应该是 希望问题解决。那么,如果有的话,在python中最优雅的方法是什么? 干杯 问题答案: 这些是图形的 连接组件 ,可以使用诸如的图形库找到。对于第二个示例:
问题内容: 以下Java代码按预期抛出: 但是以下示例仅在的内容上有所不同,执行时没有任何例外: 打印输出“ [lalala]”。为什么在第一个示例执行时第二个示例却不抛出? 问题答案: 简短答案 因为不能保证迭代器的快速失败行为。 长答案 之所以会出现此异常,是因为除非通过迭代器,否则无法在迭代集合时操作集合。 坏: 好: 现在转到“为什么”:在上面的代码中,请注意如何执行修改检查- 删除操作将
我有一本字典。 我想找到两个元素的组合,其中每个元素必须来自不同的判决键。 例如:就是这样的组合,而不是这样的组合。 我已经试过这个了 但是它给了和两个不同的组合,但是我只想要其中一个。
我知道根级firebase集合是最灵活和可伸缩的,子集合不能轻易删除。在计费方面,我知道firestore的存储数据总量、数据库操作和结果集返回的数据量。但比方说,对于一个包含消息的应用程序,我正在讨论不同的数据库体系结构方法 仅使用Root级别集合: 会话集合字段 成员(用户引用数组) 上次接收时间 会话ID(会话文档参考) 对对话和消息子集合使用根集合 会话集合字段 成员(用户引用数组) la
我正在使用Java Swing库。我有两个宽度和高度相同的矩形,坐标相同。我想把它们组合成一个,这样我就能得到一个十字架。我怎样才能做到这一点?