如何在lapply命令中使用dim()修改嵌套列表内的矩阵维度
R语言嵌套列表内层矩阵维度批量修改方案
方法1:嵌套lapply(基础R,无依赖)
无需安装任何第三方包,利用R内置的lapply嵌套遍历两层列表,一行代码即可完成所有内层矩阵的维度修改:
# 直接修改原列表 big_list <- lapply(big_list, lapply, `dim<-`, c(54, 71)) # 如需保留原列表,可赋值给新变量 # big_list_new <- lapply(big_list, lapply, `dim<-`, c(54, 71))
这里用到了R的替换函数语法,
dim<-是专门用于设置对象维度属性的内置函数,可直接作为参数传入lapply,无需额外定义匿名函数,代码更加简洁。
修改结果验证
执行后可通过以下代码确认修改生效:
# 抽查任意内层矩阵的维度 dim(big_list$list1[[1]]) # 预期输出:[1] 54 71
方法2:purrr包modify_depth(tidyverse生态适用)
如果你习惯使用tidyverse系列工具,可通过purrr包的modify_depth指定遍历深度修改,代码可读性更高:
library(purrr) # .depth = 2 表示修改第二层嵌套的所有元素 big_list <- modify_depth(big_list, .depth = 2, ~ dim(.) <- c(54,71))
内容的提问来源于stack exchange,提问作者climsaver
相关产品推荐
相关产品推荐

