r - R map_dbl() 提取字符
问题描述
这是一个初学者愚蠢的 R 问题:
df <- tribble(
~x,
list(a = 1, b = 2),
list(a = 2, c = 4)
)
df %>%
mutate(
a = map_dbl(x, "a"),
b = map_dbl(x, "b", .null = NA_real_)
)
问题 1:在帮助或 RSiteSearch() 中,我没有为 .null 提供任何资金。我在哪里可以了解使用它的适当时机?
问题 2:在帮助中我总是看到这个:map_dbl(.x, .f, ...)。什么是“...”以及什么是函数可接受的参数?
解决方案
我.null
在?map_dbl
.
...
用作可以传递给.f
函数的附加参数。这类似于许多其他功能(如?aggregate
. 要理解这一点,请考虑这个例子。
df <- structure(list(a = 1:2, b = list(c(1, 2), c(2, NA))), row.names = c(NA,
-2L), class = c("tbl_df", "tbl", "data.frame"))
df
# a b
# <int> <list>
#1 1 <dbl [2]>
#2 2 <dbl [2]>
df$b
#[[1]]
#[1] 1 2
#[[2]]
#[1] 2 NA
请注意,NA
在 的第二个元素中有值b
。
为了取每个列表的平均值,b
我们map_dbl
可以这样做:
library(dplyr)
library(purrr)
df %>% mutate(c = map_dbl(b, mean))
# a b c
# <int> <list> <dbl>
#1 1 <dbl [2]> 1.5
#2 2 <dbl [2]> NA
要忽略NA
值,我们需要传入可以使用na.rm = TRUE
的部分。mean
...
df %>% mutate(c = map_dbl(b, mean, na.rm = TRUE))
# a b c
# <int> <list> <dbl>
#1 1 <dbl [2]> 1.5
#2 2 <dbl [2]> 2
...
如果您使用匿名函数或公式样式语法,则可以忽略该部分。
df %>% mutate(c = map_dbl(b, ~mean(., na.rm = TRUE)))
推荐阅读
- c - 如何在 c 中使用 mkdir 创建文件夹?
- javascript - 将 Google 身份验证添加到 Firebase 实时数据库
- r - eval 中的错误(expr,envir,enclos):在 R 中找不到对象“Var1”
- express - 在多个文件中重构 express app.js
- excel - 使用 Excel 从 TFS 2013 迁移到 2017
- javascript - ReactJS 这个道具不是一个函数
- python - 为什么我无法删除此标签(Tkinter)
- terminal - Virtualbox - 无法在终端上使用互联网
- javascript - 如何编写不阻塞 ui 的 Javascript 代码
- lua - 如何在 MediaWiki 中使用 Lua 模块来显示图表