首页 > 解决方案 > R:当输出长度与输入不同时使用映射

问题描述

map 函数通过将函数应用于列表或原子向量的每个元素并返回与输入长度相同的对象来转换其输入。

但是如何处理输出长度与输入长度不同的情况呢?

例如:

simulate <- function(x) rnorm(10, x, 1)
sapply(1:2, simulate)

这可行,但是当我尝试使用 map() 而不是 sapply() 时,我收到一条错误消息,即:

“地图错误(1:2,模拟):需要公式或公式列表。”

标签: rdictionary

解决方案


可能是map用的不是从purrr。加载包,如果有其他包屏蔽了该功能,请使用purrr::map

library(purrr)
purrr::map(1:2, simulate)
[[1]]
 [1]  1.6140810 -0.1906985  1.3582205  0.8357189 -1.6083671  2.1074404  1.8567818 -1.4476759  0.9749724  1.7084030

[[2]]
 [1] 1.83648113 1.32697695 1.87202331 1.86865706 3.21617258 1.66576414 2.87320975 0.81623944 0.09391478 1.95562983

推荐阅读