R 将模型映射到置换数据集有时会返回模型方程,而不是模型输出
我试图使用modelr中的permute函数和purrr映射来计算置换下两类数据的平均值 根据modelr::permute的示例文件(尽管我在自定义函数中运行线性模型),如果我试图从排列的数据集计算线性模型,则函数的行为与预期的一样: 现在,我不需要线性模型,我只需要数据集中两个类别的平均值。我试着按如下方式跑步 该方程在一个简单的数据框架上自行工作R 将模型映射到置换数据集有时会返回模型方程,而不是模型输出,r,purrr,modelr,R,Purrr,Modelr,我试图使用modelr中的permute函数和purrr映射来计算置换下两类数据的平均值 根据modelr::permute的示例文件(尽管我在自定义函数中运行线性模型),如果我试图从排列的数据集计算线性模型,则函数的行为与预期的一样: 现在,我不需要线性模型,我只需要数据集中两个类别的平均值。我试着按如下方式跑步 该方程在一个简单的数据框架上自行工作 test <- perms %>% pull(perm) %>% .[[1]] %>% as.data.frame m
test <- perms %>% pull(perm) %>% .[[1]] %>% as.data.frame
mean_of_vs(test)
> perms
# A tibble: 1,000 x 2
perm .id
<list> <chr>
1 <S3: permutation> 0001
2 <S3: permutation> 0002
3 <S3: permutation> 0003
4 <S3: permutation> 0004
5 <S3: permutation> 0005
6 <S3: permutation> 0006
7 <S3: permutation> 0007
8 <S3: permutation> 0008
9 <S3: permutation> 0009
10 <S3: permutation> 0010
# ... with 990 more rows
test%pull(perm)%%>%.[1]]%%>%as.data.frame
平均值(测试)
#一个tible:1 x 2
01
1 16.6 24.5
所以我的问题是,为什么我的自定义函数不返回一组平均值为vs=0和vs=1的单行数据帧,我如何让它这样做
谢谢。Permute返回类型
,而不是数据帧
test <- perms %>% pull(perm) %>% .[[1]] %>% as.data.frame
mean_of_vs(test)
> perms
# A tibble: 1,000 x 2
perm .id
<list> <chr>
1 <S3: permutation> 0001
2 <S3: permutation> 0002
3 <S3: permutation> 0003
4 <S3: permutation> 0004
5 <S3: permutation> 0005
6 <S3: permutation> 0006
7 <S3: permutation> 0007
8 <S3: permutation> 0008
9 <S3: permutation> 0009
10 <S3: permutation> 0010
# ... with 990 more rows
因此,要执行所需操作,只需在mean\u of_vs()
函数的第一步中访问data
元素:
library(tidyverse)
library(modelr)
perms <- permute(mtcars, 1000, mpg)
jlm <- function(df){lm(mpg ~ wt, data = df)}
models3 <- map(perms$perm, jlm)
models3[[1]]
mean_of_vs <- function(df) {
df$data %>%
group_by(vs) %>%
summarize(mean(mpg)) %>%
spread(vs, `mean(mpg)`) %>%
rename(zero = `0`, one = `1`)
}
分组依据(vs)%>%
汇总(平均(mpg))%>%
价差(vs,`平均值(mpg)`)%>%
重命名(0=`0`,1=`1`)
}
现在事情如预期的那样进行:
> models4 <- map(perms$perm, mean_of_vs)
> models4[[1]]
# A tibble: 1 x 2
zero one
<dbl> <dbl>
1 16.6 24.6
>models4 models4[[1]]
#一个tibble:1x2
01
1 16.6 24.6
Permute返回类型
,而不是数据帧
test <- perms %>% pull(perm) %>% .[[1]] %>% as.data.frame
mean_of_vs(test)
> perms
# A tibble: 1,000 x 2
perm .id
<list> <chr>
1 <S3: permutation> 0001
2 <S3: permutation> 0002
3 <S3: permutation> 0003
4 <S3: permutation> 0004
5 <S3: permutation> 0005
6 <S3: permutation> 0006
7 <S3: permutation> 0007
8 <S3: permutation> 0008
9 <S3: permutation> 0009
10 <S3: permutation> 0010
# ... with 990 more rows
因此,要执行所需操作,只需在mean\u of_vs()
函数的第一步中访问data
元素:
library(tidyverse)
library(modelr)
perms <- permute(mtcars, 1000, mpg)
jlm <- function(df){lm(mpg ~ wt, data = df)}
models3 <- map(perms$perm, jlm)
models3[[1]]
mean_of_vs <- function(df) {
df$data %>%
group_by(vs) %>%
summarize(mean(mpg)) %>%
spread(vs, `mean(mpg)`) %>%
rename(zero = `0`, one = `1`)
}
分组依据(vs)%>%
汇总(平均(mpg))%>%
价差(vs,`平均值(mpg)`)%>%
重命名(0=`0`,1=`1`)
}
现在事情如预期的那样进行:
> models4 <- map(perms$perm, mean_of_vs)
> models4[[1]]
# A tibble: 1 x 2
zero one
<dbl> <dbl>
1 16.6 24.6
>models4 models4[[1]]
#一个tibble:1x2
01
1 16.6 24.6
很高兴认识你
modeler::permute
生成其类为“permutation”的数据
> class(perms[[1]][1][[1]])
[1] "permutation"
置换
类有3个属性
数据
此变量中的数据
柱
您排列的列
idx
指示已选择哪些行的索引
我认为permutation
只需要一些公式(比如lm
和等
。我不确定公式列表)
所以,如果您想使用函数,您必须转换为data.frame/data.table/tibble,如下所示
mean_of_vs <- function(df){
df %>%as.data.frame() %>% group_by(vs) %>% summarize(mean(mpg)) %>% spread(vs, `mean(mpg)`) %>%
rename(zero = `0`, one = `1`)
}
然后你就会得到结果
.....
[[97]]
# A tibble: 1 x 2
zero one
<dbl> <dbl>
1 21.4 18.4
[[98]]
# A tibble: 1 x 2
zero one
<dbl> <dbl>
1 20.4 19.7
.....
.....
[[97]]
#一个tibble:1x2
01
1 21.4 18.4
[[98]]
#一个tibble:1x2
01
1 20.4 19.7
.....
很高兴认识你
modeler::permute
生成其类为“permutation”的数据
> class(perms[[1]][1][[1]])
[1] "permutation"
置换
类有3个属性
数据
此变量中的数据
柱
您排列的列
idx
指示已选择哪些行的索引
我认为permutation
只需要一些公式(比如lm
和等
。我不确定公式列表)
所以,如果您想使用函数,您必须转换为data.frame/data.table/tibble,如下所示
mean_of_vs <- function(df){
df %>%as.data.frame() %>% group_by(vs) %>% summarize(mean(mpg)) %>% spread(vs, `mean(mpg)`) %>%
rename(zero = `0`, one = `1`)
}
然后你就会得到结果
.....
[[97]]
# A tibble: 1 x 2
zero one
<dbl> <dbl>
1 21.4 18.4
[[98]]
# A tibble: 1 x 2
zero one
<dbl> <dbl>
1 20.4 19.7
.....
.....
[[97]]
#一个tibble:1x2
01
1 21.4 18.4
[[98]]
#一个tibble:1x2
01
1 20.4 19.7
.....