首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >purrr地图输入中的混合位置和名称

purrr地图输入中的混合位置和名称
EN

Stack Overflow用户
提问于 2018-07-04 17:58:57
回答 1查看 99关注 0票数 1

purrr::map函数为选择列表元素提供了一些快捷方式:可以通过提供整数来使用位置,也可以通过提供字符串来使用名称。一个示例这里表明您可以使用向量来处理嵌套的列表元素。例如,

代码语言:javascript
复制
library(purrr)
library(repurrrsive) #includes example list data
gh_repos %>% map_chr(., c(1, 3))

在每个第一个位置内导航以检索和返回第三个list元素。

然而,当我尝试使用位置和名称混合输入时,它返回一个错误:

代码语言:javascript
复制
gh_repos %>% map_chr(., c(1, "full_name"))
#Error: Result 1 is not a length 1 atomic vector

语法可以表示返回相同结果的其他几种方法:

代码语言:javascript
复制
gh_repos %>% map_chr(c(1,3)) #Shown above
gh_repos %>% map(1) %>% map_chr("full_name")
gh_repos %>% map_chr(~pluck(.x, 1, "full_name"))

最后一种选择是我发现了一种混合输入的方法。我认识到混合向量化输入属于不同的类,因为它包含字符。这就是它产生错误的原因吗?我可以做哪些改变来使用混合位置和名称输入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-04 18:28:28

是的,问题在于不同的数据类。当您使用c()时,所有东西都会被强制使用相同的原子类型。因此,c(1, "full_name")被转化为c("1", "full_name"),这是一个字符向量。第一个列表没有一个名为"1"的命名元素。如果您希望在R中有混合类,则通常使用lists。而且map似乎支持列表。例如

代码语言:javascript
复制
gh_repos %>% map_chr(list(1, "full_name"))
# [1] "gaborcsardi/after"   "jennybc/2013-11_sfu" "jtleek/advdatasci"   "juliasilge/2016-14" 
# [5] "leeper/ampolcourse"  "masalmon/aqi_pdf"  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51178924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档