在分组数据上应用Purrr::Map时,获取Mutate错误
嗨,我正试图通过使用在分组数据上应用Purrr::Map时,获取Mutate错误,r,dplyr,purrr,R,Dplyr,Purrr,嗨,我正试图通过使用purrr::map应用一个非常简单的函数,但是我在mutate_impl(.data,dots)中不断得到错误错误: 计算错误:未使用的参数(.x[[i]])。 代码如下: data = data.frame(name = c('A', 'B', 'C'), metric = c(0.29, 0.39,0.89)) get_sample_size = function(metric, threshold = 0.01){ sample_size = ceiling(
purrr::map
应用一个非常简单的函数,但是我在mutate_impl(.data,dots)中不断得到错误错误:
计算错误:未使用的参数(.x[[i]])。
代码如下:
data = data.frame(name = c('A', 'B', 'C'), metric = c(0.29, 0.39,0.89))
get_sample_size = function(metric, threshold = 0.01){
sample_size = ceiling((1.96^2)*(metric*(1-metric))/(threshold^2))
return(data.frame(sample_size))
}
data %>% group_by(name) %>% tidyr::nest() %>%
dplyr::mutate(result = purrr::map( .x = data, .f = get_sample_size, metric = metric, threshold = 0.01 ))
您不需要
嵌套。get\u sample\u size
函数中的metric
参数应该是一个数字向量,但是如果执行nest
,则data
列是一个数据帧列表,不能作为metric
参数的输入
我认为您可以使用summary
和map
将您的函数应用于metric
列
library(tidyverse)
data %>%
group_by(name) %>%
summarize(result = purrr::map(.x = metric,
.f = get_sample_size,
threshold = 0.01))
# # A tibble: 3 x 2
# name result
# <fct> <list>
# 1 A <data.frame [1 x 1]>
# 2 B <data.frame [1 x 1]>
# 3 C <data.frame [1 x 1]>
库(tidyverse)
数据%>%
分组单位(名称)%>%
汇总(结果=purrr::map(.x=metric,
.f=获取样本大小,
阈值=0.01)
##tibble:3 x 2
#命名结果
#
#1A
#2 B
#3 C
当您在映射的部分传递度量时,不清楚该列是否是嵌套数据框中的一列。但一旦你像以前那样嵌套了数据,metric
就不是data
中的一列,而是嵌套框架中的一列……也称为“data”。(这是一个很好的例子,说明了为什么你需要更具体的变量名。)
如果要映射到数据
列,可以使用$metric
指向该列,或者像我在这里所做的那样,在编写函数时(例如df$metric
),或者在公式表示法中(例如$metric
)
正如@www所说,在这种情况下,您不需要嵌套数据帧。但对于更复杂的情况,可能需要使用嵌套的数据帧,例如用于构建模型,因此最好知道如何准确引用所需的数据
库(tidyverse)
数据%>%
分组单位(名称)%>%
tidyr::nest()%>%
变异(结果=映射(数据、函数(df)){
获取样本大小(度量=df$metric,阈值=0.01)
}))
#>#tibble:3 x 3
#>名称数据结果
#>
#>1A
#>2 B
#>3 C
由(v0.2.1)于2019-01-16创建