如何在R语言中对矩阵列表批量运行multkw函数?
解决R语言批量运行ULT包multkw函数的报错问题
问题根源
你生成my_list时,在转换为矩阵后额外嵌套了一层list(),导致列表中的每个元素是嵌套的list对象,而multkw()函数要求输入的y必须是矩阵类型,这直接引发了unimplemented type 'list' in 'greater'错误。
解决方案
1. 修正矩阵列表生成代码
移除as.matrix()后的list()调用,直接返回矩阵:
my_list <- apply( columns_data, 1, function(i) { idx <- strsplit(i, " , ") |> unlist() |> as.integer() # 直接返回矩阵,取消多余的list()嵌套 data[, idx] |> as.matrix() } )
2. 批量运行multkw函数
修正后的my_list每个元素都是符合要求的矩阵,直接用lapply调用即可:
# 批量执行并保存结果 results_list <- lapply(my_list, function(mat) { multkw(y = mat, group = data$S_M) })
验证修正效果
可以先检查列表元素的类型,确认是矩阵:
# 检查第一个元素的类型 class(my_list[[1]]) # 正确输出应为 "matrix"
这样就能成功批量运行multkw函数,得到每个子矩阵对应的分析结果。
内容的提问来源于stack exchange,提问作者confusedindividual
相关产品推荐
相关产品推荐

