R语言中使用map_dbl无法正常访问嵌套值的问题求助
解决map_dbl()返回numeric(0)且无需索引获取所有值的问题
听起来你遇到的情况应该是:你的输入是一个包含多元素向量的列表,直接用map_dbl()的时候,因为每个列表元素本身是长度大于1的数值向量,map_dbl()要求每个元素处理后返回一个单一数值(scalar),所以没法直接解析,就返回了numeric(0);而你指定索引比如~.[1]时,每个元素只取第一个值,满足了单一数值的要求,所以能得到正确的结果。
如果你的目标是把列表里所有向量的数值都提取成一个扁平的数值向量,不需要逐个指定索引,那你可以用这几个方法:
用
purrr::flatten_dbl():这个函数专门用来把嵌套的数值列表/向量扁平化成一个一维数值向量,比如:library(purrr) my_list <- list(c(64, 55), c(60, 72), c(62, 81)) flatten_dbl(my_list) # 输出:[1] 64 55 60 72 62 81用基础R的
unlist():同样能实现扁平化,而且不需要加载purrr包:unlist(my_list) # 输出和上面一致
简单总结:map_dbl()的定位是对列表每个元素返回单个数值,如果要提取所有值,换成flatten_dbl()或者unlist()就能一次性拿到所有数值,完全不需要指定索引啦。
内容的提问来源于stack exchange,提问作者Max Sjödin
相关产品推荐
相关产品推荐

