r - 按因子拆分数据帧并按因子命名新的df和附加描述,如“new_dataframe(因子)”
问题描述
我需要split
通过循环将我的 df 转换为几个新的 df。问题,该因子由数字组成,并且调用了新的df"1"
"2"
等等,这使得很难为下一段代码调用它们,...任何帮助我如何重命名/命名新的df's。像new_df_1
,new_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
感谢您的任何建议!
解决方案
If we need objects in the global environment, use list2env
names(new_df) <- paste(new_df, seq_along(new_df), sep="_")
list2env(new_df, envir = .GlobalEnv)
NOTE: Not recommended to create multiple global objects. Instead, it can be all processed as a list
('new_df')
Or using assign
nm1 <- names(new_df) # after creating the names with `paste`
for (nm in nm1) {
assign(nm,new_df[[i]])
}
推荐阅读
- python-3.x - 为什么 subprocess.check_output 会引发错误 CalledProcessError
- angular - 为什么同一个对象根据访问方式有 2 个不同的值?
- python - scikit-learn:按名称选择列的转换器
- javascript - 如何在 p5.js 中的点数组之间绘制正方形?
- ios - 在 crashlytics swift/ios 中具有非常大的行号值的 EXC_BREAKPOINT
- node.js - 如何在 Hybris Commerce Server 上启动节点服务器
- python - Python 和 SQLAlchemy 使用 For 循环打印数据库内容
- java - 使用 Java 12 和 Gradle 进行测试不起作用
- javascript - 菜单汉堡 javascript 无法正常工作
- recursion - 惯用地避免方案中的递归限制