RL oop для выбора столбцов Specifi c из нескольких фреймов данных - PullRequest
2 голосов
/ 11 марта 2020

Я пытаюсь написать al oop в R, который выберет одинаковые заданные c имена столбцов в нескольких фреймах данных. Приведенный ниже код, похоже, обеспечивает желаемый результат, но кадры данных не переназначаются. Как я могу переназначить кадры данных 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")} )

1 Ответ

1 голос
/ 11 марта 2020

Мы можем использовать именованное 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

Вместо создания «df_list» путем указания list(df1, df2), мы можем получить именованный список, используя mget

df_list <- mget(ls(pattern= "^df\\d+$"))

, тогда это будет проще

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