btt*_*mio 6 r list dataframe dplyr
我正在尝试在函数内使用数据框的名称创建一个新列。
这是我的代码:
df1 <- data.frame(var1 = seq(1:10))
df2 <- data.frame(var2 = seq(1:10))
df3 <- data.frame(var3 = seq(1:10))
df_LIST <- tibble::lst(df1, df2, df3)
df_FUN <- lapply(
df_LIST,
function(x)
{
mutate(x,
df_NAME = deparse(substitute(x))
) %>%
select("df_NAME") %>%
na.omit()
}
)
list2env(df_FUN, .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)
结果:
> df1
df_NAME
1 x
2 x
3 x
4 x
5 x
6 x
7 x
8 x
9 x
10 x
Run Code Online (Sandbox Code Playgroud)
预期结果:
> df1
df_NAME
1 df1
2 df1
3 df1
4 df1
5 df1
6 df1
7 df1
8 df1
9 df1
10 df1
Run Code Online (Sandbox Code Playgroud)
一种选择是purrr::imap:
library(dplyr)
df_LIST <- tibble::lst(df1, df2, df3)
df_FUN <- purrr::imap(
df_LIST,
function(x, y) {
mutate(x,
df_NAME = y
) %>%
select("df_NAME") %>%
na.omit()
}
)
df_FUN$df1
#> df_NAME
#> 1 df1
#> 2 df1
#> 3 df1
#> 4 df1
#> 5 df1
#> 6 df1
#> 7 df1
#> 8 df1
#> 9 df1
#> 10 df1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |