gpt4 book ai didi

R 循环从多个数据框中选择特定列

转载 作者:行者123 更新时间:2023-12-05 06:20:03 29 4
gpt4 key购买 nike

我正在尝试在 R 中编写一个循环,它将在多个数据框中选择相同的特定列名称。下面的代码似乎实现了所需的输出,但没有重新分配数据帧。如何将数据帧 df1 和 df2 重新分配给 lapply 输出?

 col1 <- c(1,2,3,4)
col2 <- c("A","B","C","D")
col3 <- c(4,15,"BLANK","ZZ")

df1 <- data.frame(col1,col2, col3)

col1 <- c(500,546,47,87)
col2 <- c("E","L","J","U")
col3 <- c(6,10,"F","R")

df2 <- data.frame(col1,col2, col3)

df_list <- list(df1,df2)

lapply(df_list,function(x) {x<- x %>% select("col1","col2")} )

最佳答案

我们可以使用命名的 list 然后使用 list2env 更新全局环境中的对象(但是,最好将其保存在 list )

list2env(setNames(lapply(df_list, `[`, c("col1", "col2")),
c("df1", "df2")), .GlobalEnv)
df1
# col1 col2
#1 1 A
#2 2 B
#3 3 C
#4 4 D
df2
# col1 col2
#1 500 E
#2 546 L
#3 47 J
#4 87 U

不是通过指定 list(df1, df2) 创建“df_list”,我们可以使用 mget

来创建命名列表
df_list <- mget(ls(pattern= "^df\\d+$"))

那么,就更简单了

list2env(lapply(df_list, `[`, c("col1", "col2")), .GlobalEnv)

关于R 循环从多个数据框中选择特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60641328/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com