如何用for循环将多列表组合为列表的列表?为何返回NULL?
解决R语言for循环合并列表返回NULL的问题
问题原因
R语言中的for循环默认不会返回任何值,你把整个for循环赋值给result变量,自然得到NULL。实际上你在循环里已经把列表元素存入了aa,但最后没有将aa赋值给result。
解决方法
方法1:修正for循环逻辑
不需要把for循环赋值给变量,直接在循环后把aa赋值给result即可:
list_a <- list(1, 2, 3, 4) list_b <- list('a', 'b', 'c', 'd') naming <- c("list_a", "list_b") aa <- list() for(i in 1:length(naming)){ aa[[i]] <- get(naming[i]) } result <- aa
执行后result就是你需要的列表的列表。
方法2:用lapply替代for循环(更推荐)
R中处理这类批量获取对象的场景,用lapply比手动写for循环更简洁高效,它会自动将每个元素的处理结果收集成列表:
list_a <- list(1, 2, 3, 4) list_b <- list('a', 'b', 'c', 'd') naming <- c("list_a", "list_b") result <- lapply(naming, get)
这样一行就能得到预期结果,还避免了手动初始化列表和索引赋值的麻烦。
内容的提问来源于stack exchange,提问作者LDS
相关产品推荐
相关产品推荐

