如何一次性修改嵌套数据的每个数据集的所有列?
How to modify all the columns of each data set of a nested data in one go?
I have this nested data
我想取消嵌套,但我必须在取消嵌套之前对列的 类 进行标准化
`library(tidyverse`)
nested_data<-iris %>% nest(data = !Species)
#I added to the third dataset an additionnal variable
nested_data$data[[3]]$randomVar<-round(rnorm(nrow(
nested_data$data[[3]]),100,5),1)
#I dropped a column of the second dataset
nested_data$data[[2]]$Sepal.Length<-NULL
#I changed the type of certain variables
nested_data$data[[2]]$Petal.Length<- as.character(
nested_data$data[[2]]$Petal.Length)
nested_data$data[[1]]$Petal.Width<-as.character(
nested_data$data[[1]]$Petal.Width
)
使用不同类型的 类 某些变量我无法取消嵌套
nested_data%>%unnest(data)
我收到此错误消息:
Error: Can't combine `..1$Petal.Length` <double> and `..2$Petal.Length` <character>.
Run `rlang::last_error()` to see where the error occurred.
我想使用 for loop
或任何 vectorization
方法在一行代码中更改 character
三个数据集的所有变量。
我不知道该怎么做。
如果不小心列类型不同,那么可以在unnest
之前使用type.convert
library(dplyr)
library(tidyr)
library(purrr)
nested_data %>%
mutate(data = type.convert(data, as.is = TRUE)) %>%
unnest(data)
-输出
# A tibble: 150 × 6
Species Sepal.Length Sepal.Width Petal.Length Petal.Width randomVar
<fct> <dbl> <dbl> <dbl> <dbl> <dbl>
1 setosa 5.1 3.5 1.4 0.2 NA
2 setosa 4.9 3 1.4 0.2 NA
3 setosa 4.7 3.2 1.3 0.2 NA
4 setosa 4.6 3.1 1.5 0.2 NA
5 setosa 5 3.6 1.4 0.2 NA
6 setosa 5.4 3.9 1.7 0.4 NA
7 setosa 4.6 3.4 1.4 0.3 NA
8 setosa 5 3.4 1.5 0.2 NA
9 setosa 4.4 2.9 1.4 0.2 NA
10 setosa 4.9 3.1 1.5 0.1 NA
# … with 140 more rows
或者如果 type.convert
不起作用(由于字符元素,则强制列为 character
、unnest
类型,然后使用 type.convert
nested_data %>%
mutate(data = map(data,~
.x %>%
mutate(across(everything(), as.character)))) %>%
unnest(data) %>%
type.convert(as.is = TRUE)
I have this nested data
我想取消嵌套,但我必须在取消嵌套之前对列的 类 进行标准化
`library(tidyverse`)
nested_data<-iris %>% nest(data = !Species)
#I added to the third dataset an additionnal variable
nested_data$data[[3]]$randomVar<-round(rnorm(nrow(
nested_data$data[[3]]),100,5),1)
#I dropped a column of the second dataset
nested_data$data[[2]]$Sepal.Length<-NULL
#I changed the type of certain variables
nested_data$data[[2]]$Petal.Length<- as.character(
nested_data$data[[2]]$Petal.Length)
nested_data$data[[1]]$Petal.Width<-as.character(
nested_data$data[[1]]$Petal.Width
)
使用不同类型的 类 某些变量我无法取消嵌套
nested_data%>%unnest(data)
我收到此错误消息:
Error: Can't combine `..1$Petal.Length` <double> and `..2$Petal.Length` <character>.
Run `rlang::last_error()` to see where the error occurred.
我想使用 for loop
或任何 vectorization
方法在一行代码中更改 character
三个数据集的所有变量。
我不知道该怎么做。
如果不小心列类型不同,那么可以在unnest
type.convert
library(dplyr)
library(tidyr)
library(purrr)
nested_data %>%
mutate(data = type.convert(data, as.is = TRUE)) %>%
unnest(data)
-输出
# A tibble: 150 × 6
Species Sepal.Length Sepal.Width Petal.Length Petal.Width randomVar
<fct> <dbl> <dbl> <dbl> <dbl> <dbl>
1 setosa 5.1 3.5 1.4 0.2 NA
2 setosa 4.9 3 1.4 0.2 NA
3 setosa 4.7 3.2 1.3 0.2 NA
4 setosa 4.6 3.1 1.5 0.2 NA
5 setosa 5 3.6 1.4 0.2 NA
6 setosa 5.4 3.9 1.7 0.4 NA
7 setosa 4.6 3.4 1.4 0.3 NA
8 setosa 5 3.4 1.5 0.2 NA
9 setosa 4.4 2.9 1.4 0.2 NA
10 setosa 4.9 3.1 1.5 0.1 NA
# … with 140 more rows
或者如果 type.convert
不起作用(由于字符元素,则强制列为 character
、unnest
类型,然后使用 type.convert
nested_data %>%
mutate(data = map(data,~
.x %>%
mutate(across(everything(), as.character)))) %>%
unnest(data) %>%
type.convert(as.is = TRUE)