r - tidyr 嵌套表上的 mutate_each 给出 "Unknown inputs"

标签 r dplyr tidyr purrr

我正在尝试做 mutate_each使用purr::maptidyr::nest 创建的一组表上.

下面是我正在尝试执行的操作以及产生的错误的示例:

library(tidyr)
library(gapminder)
library(dplyr)
library(purrr)


by_country <- gapminder %>% 
  group_by(continent, country) %>% 
  nest() %>% 
  mutate(data2 = map(data,  ~ mutate_each(.,funs(as.numeric))))

给出:

Error: Unknown inputs

是什么导致了这个问题?有解决办法吗?我可以使用 apply而不是mutate_each但这会删除行名。

编辑:从第一个回复来看,目的似乎并不明确。所以也许我正在尝试以错误的方式做事。让我解释一下。

如果你这样做:

by_country <- gapminder %>% 
   group_by(continent, country) %>% 
   nest()

你有:

by_country$data[[1]]
Source: local data frame [12 x 4]

    year lifeExp      pop gdpPercap
   (int)   (dbl)    (int)     (dbl)
1   1952  28.801  8425333  779.4453
2   1957  30.332  9240934  820.8530
3   1962  31.997 10267083  853.1007
4   1967  34.020 11537966  836.1971
5   1972  36.088 13079460  739.9811
6   1977  38.438 14880372  786.1134
7   1982  39.854 12881816  978.0114
8   1987  40.822 13867957  852.3959
9   1992  41.674 16317921  649.3414
10  1997  41.763 22227415  635.3414
11  2002  42.129 25268405  726.7341
12  2007  43.828 31889923  974.5803

我想要的是为每一列运行一个函数;但对每个嵌套表单独完成。所以我想在每个表上运行以下等效内容:

mutate_each(by_country$data[[1]],funs(as.numeric))

给予:

Source: local data frame [12 x 4]

    year lifeExp      pop gdpPercap
   (dbl)   (dbl)    (dbl)     (dbl)
1   1952  28.801  8425333  779.4453
2   1957  30.332  9240934  820.8530
3   1962  31.997 10267083  853.1007
4   1967  34.020 11537966  836.1971
5   1972  36.088 13079460  739.9811
6   1977  38.438 14880372  786.1134
7   1982  39.854 12881816  978.0114
8   1987  40.822 13867957  852.3959
9   1992  41.674 16317921  649.3414
10  1997  41.763 22227415  635.3414
11  2002  42.129 25268405  726.7341
12  2007  43.828 31889923  974.5803

最佳答案

map使用.x当函数参数作为公式给出时引用输入数据。更改后,mutate_each的形式有两种可能:

by_country <- gapminder %>% 
  group_by(continent, country) %>% 
  nest()  %>%
  mutate(data2 = map(data,  ~ mutate_each(.x, "as.numeric")))

by_country2 <- gapminder %>% 
  group_by(continent, country) %>% 
  nest()  %>%
  mutate(data2 = map(data,  ~ mutate_each(.x, funs(as.numeric(.)))))

看来mutate(data2 = map(data, ~ mutate_each(.x, funs(as.numeric))))应该也可以工作,但事实并非如此。

关于r - tidyr 嵌套表上的 mutate_each 给出 "Unknown inputs",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36384175/

相关文章:

r - 如何在R中四舍五入到整数?

r - dplyr 通过比较变量和不同大小的向量来改变变量

r - 使用 mutate() 进行公式评估

r - 如果列不同,则用字符串分隔列

r - 如何使用 R 合并两个没有公共(public)列名的数据框

R tidyverse如何依次执行两个pivot_longer而不是单个pivot_longer

r - 在 R 中编写函数

r - 对多列应用 condformat 规则

r - 在 Shiny R 中显示文件上传前的数据

r - 在忽略 dplyr 链中的特定值集时取平均值