首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >purrr语法和map_depth

purrr语法和map_depth
EN

Stack Overflow用户
提问于 2020-01-26 23:55:13
回答 2查看 266关注 0票数 2

为了语法上的一致性,我尝试使用不带管道的purrr。但是我遇到了以下问题,在相同深度下提取列表元素

代码语言:javascript
复制
## Example of a list

Henry_VIII <- list(name="Henry Tudor",DOB=as.Date("28 June 1491", format=("%d %B %Y")),place_of_birth="Palace of Placentia, Greenwich, Kent",
                   DOD=as.Date("28 January 1547", format=("%d %B %Y")),place_of_death="Palace of Whitehall, London")


Catherine_of_Aragon <- list(name="Catherine of Aragon", marriage_date=1509, end_date=1533, end_cause="annulled")
Anne_Boleyn <- list(name="Anne Boleyn", marriage_date=1533, end_date=1536, end_cause="executed")

Henry_VIII <- list(name="Henry Tudor",DOB=as.Date("28 June 1491", format=("%d %B %Y")),place_of_birth="Palace of Placentia, Greenwich, Kent",
                   DOD=as.Date("28 January 1547", format=("%d %B %Y")),place_of_death="Palace of Whitehall, London", marriages=list(Catherine_of_Aragon,Anne_Boleyn))  


sapply(1:length(Henry_VIII$marriages), function(x) Henry_VIII$marriages[[x]]$end_cause) ##works fine

Henry_VIII$marriages %>% map_depth(1,4) ## also works fine

但是,下面抛出了一个错误

代码语言:javascript
复制
purrr::map(Henry_VIII$marriages, c(1,4))

我应该只使用管道,还是我遗漏了一个明显的语法错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-26 23:58:51

您没有指定需要应用的函数,即

代码语言:javascript
复制
purrr::map(Henry_VIII$marriages, `[[`, 4)
#Similar to
#purrr::map(Henry_VIII$marriages, ~.x[[4]])

#[[1]]
#[1] "annulled"

#[[2]]
#[1] "executed"

或者,在这种情况下,map_chr会更好?

代码语言:javascript
复制
purrr::map_chr(Henry_VIII$marriages, `[[`, 4)
#[1] "annulled" "executed"
票数 1
EN

Stack Overflow用户

发布于 2020-01-27 02:05:52

我们可以从base R使用lapply

代码语言:javascript
复制
lapply(Henry_VIII$marriages, `[[`, 4)
#[[1]]
#[1] "annulled"

#[[2]]
#[1] "executed"

或者如果我们需要一个向量

代码语言:javascript
复制
sapply(Henry_VIII$marriages, `[[`, 4)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59920038

复制
相关文章

相似问题

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