Сохранение фреймов данных в значения в списке - PullRequest
0 голосов
/ 05 июня 2018

У меня есть список заголовков, по которым я хотел бы перебрать и создать / сохранить фреймы данных.Я пробовал использовать функцию paste() (как показано ниже), но это не работает для меня.Любой совет будет принят с благодарностью.

samples <- list("A","B","C")

for (i in samples){ 
    paste(i,sumT,sep="_") <- data.frame(col1=NA,col1=NA)
    }

Мой желаемый вывод - три пустых фрейма данных с именами: A_sumT, B_sumT и C_sumT

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Рассмотрите возможность создания списка фреймов данных и избегайте множества отдельных объектов, заполняющих глобальную среду, поскольку этот пример может распространяться на сотни, а не только на три.Кроме того, при таком подходе вы будете поддерживать один контейнер, способный выполнять массовые операции на всех фреймах данных.

Используя sapply ниже для символьного вектора, вы создаете именованный список:

samples <- c("A","B","C")   # OR unlist(list("A","B","C"))

df_list <- sapply(samples, function(x) data.frame(col1=NA,col2=NA), simplify=FALSE)

# RUN ANY DATAFRAME OPERATION
head(df_list$A)
tail(df_list$B)
summary(df_list$C)

# BULK OPERATIONS
stacked_df <- do.call(rbind, df_list)
stacked_df <- do.call(cbind, df_list)
merged_df <- Reduce(function(x,y) merge(x,y,by="col1"), df_list)

Или, если вам нужно переименовать список

# RENAME LIST
df_list <- setNames(df_list, paste0(samples, "_sumT"))

# RUN ANY DATAFRAME OPERATION
head(df_list$A_sumT)
tail(df_list$B_sumT)
summary(df_list$C_sumT)
0 голосов
/ 05 июня 2018

Вот ответ с purrr.

samples <- list("A", "B", "C")

samples %>% 
     purrr::map(~ data.frame()) %>% 
     purrr::set_names(~ paste(samples, "sumT", sep="_"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...