Tengo 20 marcos de datos de los cuales me gustaría subconjuntar 4 variables en un nuevo marco de datos.

DF1 <- subset(Circle1.csv, select = c(col1, col2, col3, col4))
DF2 <- subset(Circle2.csv, select = c(col1, col2, col3, col4))

No quiero escribir esto 20 veces; ¿hay alguna manera de hacer esto?

Muchas gracias

0
Crabbe1 10 dic. 2019 a las 20:57

2 respuestas

La mejor respuesta

Usando el bucle for

nrows <- 1:4 # number of rows to subset
colNames <- c('col1', 'col2', 'col3', 'col4') # column names

# assign subset of dataframe
for (i in 1:20) {
  assign(x = paste0('DF', i), value = get(paste0('Circle', i, '.csv'))[nrows, colNames])
}
0
Sathish 10 dic. 2019 a las 18:32

Obtenga todos los objetos en un list, y subset una vez haciendo un bucle sobre el list

lst1 <- lapply(mget(sprintf("Circle%d.csv", 1:20)), subset, 
            select = c(col1, col2, col3, col4))

O con dplyr/purrr

library(purrr)
library(dplyr)
lst1 <- map(mget(sprintf("Circle%d.csv", 1:20)), ~ .x %>% 
                      select(col1:col4))
0
akrun 10 dic. 2019 a las 18:00