如何在R中通过循环将数据框列名设为变量并赋值对应列数据?
解决DataFrame列转独立变量的问题
你的循环代码逻辑有误,name[b] = df[b]是把df的第b列赋值给向量name的第b个元素,而非创建以列名为名的独立变量。以下是两种可行的解决方法:
方法一:用assign()循环创建变量
df <- read.csv('fileName.csv') col_names <- colnames(df) for (col in col_names) { assign(col, df[[col]]) }
assign()函数的第一个参数是要创建的变量名(字符串格式),第二个参数是对应列的数据,循环遍历所有列名即可批量生成变量。
方法二:用list2env()一步完成(更高效)
df <- read.csv('fileName.csv') list2env(df, envir = .GlobalEnv)
DataFrame本质是列名为键的列表,list2env()可以直接把列表中的每个元素转为全局环境中的变量,无需循环,适合处理百列规模的DataFrame。
运行任意一种方法后,在控制台输入col1、col2等列名,就能直接调出对应列的数据,和手动赋值的效果完全一致。
内容的提问来源于stack exchange,提问作者Steven Ace
相关产品推荐
相关产品推荐

