通过使用此代码,我已经有了一个包含dplyr中所有功能的列表
content <- mget(ls("package:dplyr"), inherits = TRUE)
dplyr_functions <- Filter(is.function, content)
我想要得到的结果就像
的结果names(dplyr_functions)
它将是一个chr向量,其中包含dplyr软件包中的所有函数名称。
但是当我使用map()
函数时,我的代码就像:
dplyr_name <- map_chr(dplyr_functions, names)
提示错误
“结果1必须是单个字符串,而不是长度为0的NULL”
所以我只想知道错误是什么意思?如何使用map_chr
获取包含 dplyr_functions 中所有名称的向量?
答案 0 :(得分:2)
map
遍历列表元素的内容“值”,例如dplyr_functions[[1]]
,依此类推,而不是像dplyr_functions[1]
那样通过元素,请尝试两者均能看到区别。因此,names(dplyr_functions[[1]])
返回NULL
并且map_chr
失败,而names(dplyr_functions[1])
返回%>%
并且map_chr
可以工作。
因此,我们可以使用第二种方法遍历列表索引和子集,或使用旨在遍历列表名称的imap
。
library(purrr)
map_chr(seq_along(dplyr_functions), ~names(dplyr_functions[.x]))
#or
imap_chr(dplyr_functions, ~.y) %>% unname()