我有一个标题列表,我想迭代并创建/保存数据帧。我已尝试使用listMoreThan1000
函数(如下所示),但这对我不起作用。任何建议都将不胜感激。
paste()
我想要的输出是三个空数据框:samples <- list("A","B","C")
for (i in samples){
paste(i,sumT,sep="_") <- data.frame(col1=NA,col1=NA)
}
,A_sumT
和B_sumT
答案 0 :(得分:0)
这是purrr
的答案。
samples <- list("A", "B", "C")
samples %>%
purrr::map(~ data.frame()) %>%
purrr::set_names(~ paste(samples, "sumT", sep="_"))
答案 1 :(得分:0)
考虑创建一个数据框列表,并避免许多单独的对象充斥全球环境,因为此示例可以扩展到数百个而不仅仅是三个。此外,通过这种方法,您将维护一个容器,该容器能够跨所有数据帧运行批量操作。
通过在字符向量上使用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)