R语言从向量列表生成按元素名称分组的2x2矩阵列表方法咨询
问题原因
你原来使用的lapply(SC_sum, "matrix", nrow = 2, byrow = T)逻辑是遍历SC_sum列表内的每一个长度为4的向量,将每个向量单独转换为2x2矩阵,所以得到的4个矩阵分别对应SC_sum的4个原生向量,和你需要的「按工具类型分组,每个分组取4个列表的对应元素再拼接为矩阵」的需求逻辑完全相反。
修正代码
基础R实现(无需额外安装包)
# 提取统一的工具名称 tool_names <- names(SC_sum[[1]]) # 按工具名循环提取对应元素后生成矩阵 result <- lapply(tool_names, function(cur_name) { # 从SC_sum的4个向量中分别提取当前工具名对应的数值,组成长度为4的向量 cur_vals <- sapply(SC_sum, `[[`, cur_name) # 按你要求的byrow=FALSE规则生成2x2矩阵 matrix(cur_vals, nrow = 2, byrow = FALSE) }) # 给结果列表命名,方便直接调用对应工具的矩阵 names(result) <- tool_names
调用验证:result$chisel即可输出你预期的chisel矩阵。
purrr简洁实现(tidyverse生态)
library(purrr) result <- map(set_names(names(SC_sum[[1]])), ~map_dbl(SC_sum, .x) |> matrix(nrow = 2, byrow = FALSE))
内容的提问来源于stack exchange,提问作者hnguyen
相关产品推荐
相关产品推荐

