为列表中的每个元素创建一个新的数据框
Creating a New Data Frame For Each Element in a List
假设我有以下列表“d”:
library(combinat)
d = permn(c("a", "b", "c"))
看起来如下:
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "a" "c" "b"
[[3]]
[1] "c" "a" "b"
[[4]]
[1] "c" "b" "a"
[[5]]
[1] "b" "c" "a"
[[6]]
[1] "b" "a" "c"
是否可以将每个元素转换为新的数据框?
这就是我想要做的:
data_1 = data.frame(col1 = c("a", "b", "c"))
data_2 = data.frame(col1 = c("a", "c", "b"))
data_3 = data.frame(col1 = c("c", "a", "b"))
data_4 = data.frame(col1 = c("c", "b", "a"))
data_5 = data.frame(col1 = c("b", "c", "a"))
data_6 = data.frame(col1 = c("b", "a", "c"))
有人可以告诉我怎么做吗?
谢谢!
您可以 list2env
在制作 data.frame
和 setNames
之后进入 .GlobalEnv
。
lapply(d, \(x) data.frame(col1=x)) |>
setNames(paste0('data', seq_along(d))) |>
list2env(envir=.GlobalEnv)
data1
# col1
# 1 a
# 2 b
# 3 c
R 版本 < 4.1:
list2env(
setNames(
lapply(d, function(x) data.frame(col1=x)),
paste0('data', seq_along(d))),
envir=.GlobalEnv)
一个tidyverse
选项:
library(tidyverse)
purrr::map(d, function(x)
as.data.frame(x) %>% rename("col" = x)) %>%
set_names(paste0('data_', seq_along(d))) %>%
list2env(envir = .GlobalEnv)
假设我有以下列表“d”:
library(combinat)
d = permn(c("a", "b", "c"))
看起来如下:
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "a" "c" "b"
[[3]]
[1] "c" "a" "b"
[[4]]
[1] "c" "b" "a"
[[5]]
[1] "b" "c" "a"
[[6]]
[1] "b" "a" "c"
是否可以将每个元素转换为新的数据框?
这就是我想要做的:
data_1 = data.frame(col1 = c("a", "b", "c"))
data_2 = data.frame(col1 = c("a", "c", "b"))
data_3 = data.frame(col1 = c("c", "a", "b"))
data_4 = data.frame(col1 = c("c", "b", "a"))
data_5 = data.frame(col1 = c("b", "c", "a"))
data_6 = data.frame(col1 = c("b", "a", "c"))
有人可以告诉我怎么做吗?
谢谢!
您可以 list2env
在制作 data.frame
和 setNames
之后进入 .GlobalEnv
。
lapply(d, \(x) data.frame(col1=x)) |>
setNames(paste0('data', seq_along(d))) |>
list2env(envir=.GlobalEnv)
data1
# col1
# 1 a
# 2 b
# 3 c
R 版本 < 4.1:
list2env(
setNames(
lapply(d, function(x) data.frame(col1=x)),
paste0('data', seq_along(d))),
envir=.GlobalEnv)
一个tidyverse
选项:
library(tidyverse)
purrr::map(d, function(x)
as.data.frame(x) %>% rename("col" = x)) %>%
set_names(paste0('data_', seq_along(d))) %>%
list2env(envir = .GlobalEnv)