按因子拆分数据帧,并按因子和其他描述(如“ new_dataframe(factor)”)命名新的df

时间:2018-12-12 15:55:22

标签: r dataframe split lapply names

我需要通过循环将因子split "1"转换为几个新的df。问题,因子由数字组成,新的df称为"2" new_df_1,依此类推,因此很难为下一段代码调用它们,...我能提供任何帮助重命名新的df。像new_df_2new_df<- split(df, df$cluster) new_names <- as.character(unique(df$cluster)) for (i in 1:length(new_df)) {assign(new_names[i],new_df[[i]])} 一样?

我到目前为止有什么:

lapply

我也尝试了new_df<- split(df, df$cluster) lapply(names(new_df),function(nm) write.csv(new_df[[nm]],paste("new_df",nm,".csv"))) ,但是只能保存,而不能在Global Environment中创建df,因为我实际上不需要保存它供以后使用。

new_df 1.csv

它可以工作,但是可以创建一个文件:{{1}}

谢谢您的任何建议!

2 个答案:

答案 0 :(得分:1)

如果我们在全局环境中需要对象,请使用list2env

names(new_df) <- paste(new_df, seq_along(new_df), sep="_")
list2env(new_df, envir = .GlobalEnv)

注意:不建议创建多个全局对象。而是可以将其全部处理为list('new_df')


或使用assign

nm1 <- names(new_df) # after creating the names with `paste`
for (nm in nm1) {
      assign(nm,new_df[[i]])
 }

答案 1 :(得分:0)

cluster_list <- split(df, f = df$clust)

构建集群列表,使用lapply来操纵列表。