按因子拆分数据帧并按因子命名新的 df 和附加描述,如 "new_dataframe(factor)"

split dataframe by factor and name new df by the factor and addidtional description like "new_dataframe(factor)"

我需要通过循环将我的 df split 变成几个新的 df。问题,这个因素由数字组成,新的 df 被称为 "1" "2" 等等,这使得下一段代码很难调用它们,...任何帮助我能rename/name 新的 df。像 new_df_1new_df_2?

我目前拥有的:

new_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但只能保存,不能在全局环境中创建 df,因为我实际上不需要保存它以备后用。

new_df<- split(df, df$cluster)
lapply(names(new_df),function(nm)
write.csv(new_df[[nm]],paste("new_df",nm,".csv")))

有效,但生成一个文件:new_df 1.csv

感谢您的任何建议!

如果我们需要全局环境中的对象,请使用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]])
 }

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

构建集群列表,操作列表使用:lapply