如何获取R语言列表中每个矩阵的各列最大值
问题原因
你报错的核心原因是apply函数仅适用于矩阵、数组等带有dim维度属性的对象,你传入的是由10个矩阵组成的列表结构,列表本身没有维度属性,所以触发了dim(X) must have a positive length的错误。另外你代码里的变量名My List包含空格,不符合R的变量命名规范,也是潜在的报错点。
解决代码
# 假设你的矩阵列表变量名为my_list(不要带空格) result <- lapply(my_list, function(x) { # 对单个矩阵计算列最大值,转置为1×5矩阵保留列名 t(apply(x, MARGIN = 2, FUN = max, na.rm = TRUE)) })
代码说明
lapply是R中专门用来遍历列表的函数,输入为列表、输出也为列表,刚好匹配你输入列表、输出列表的需求- 内层
apply(x, 2, max, na.rm = TRUE)会对每个单独的5×5矩阵按列计算最大值,返回带列名的数值向量 t()用于将数值向量转置为1行5列的矩阵,完全匹配你需要的输出格式
如果只需要各列最大值的命名向量,不需要1×5矩阵结构,直接去掉t()即可。运行得到的result就是符合要求的结果,你可以打印result[[1]]、result[[10]]验证,和你给出的示例输出完全一致。
内容的提问来源于stack exchange,提问作者HongH378
相关产品推荐
相关产品推荐

