R 将多个csv文件读取为新数据帧并重命名列
我尝试使用for循环读取多个数据帧,并尝试在数据帧中分配变量名。我想给所有数据帧指定相同的列名 我使用的for循环如下所示:R 将多个csv文件读取为新数据帧并重命名列,r,dataframe,R,Dataframe,我尝试使用for循环读取多个数据帧,并尝试在数据帧中分配变量名。我想给所有数据帧指定相同的列名 我使用的for循环如下所示: for (i in 1:15){ assign(paste0("watersurf",i),read.table(paste0("D:/water-surf/","water-surf-",i,".dat"),header=F,skip=1,sep="")) } Error in names(paste("watersurf", i)) <- c("X", "
for (i in 1:15){
assign(paste0("watersurf",i),read.table(paste0("D:/water-surf/","water-surf-",i,".dat"),header=F,skip=1,sep=""))
}
Error in names(paste("watersurf", i)) <- c("X", "Y", "Z") :
target of assignment expands to non-language object
* , Water Levels, Depth Averaged
407902.775 3437067.475 0.331
406719.675 3436930.750 0.327
405754.025 3436197.650 0.325
404614.375 3435972.650 0.322
404273.050 3434775.450 0.321
403347.425 3433981.900 0.320
404118.025 3433179.975 0.318
404798.100 3432441.075 0.317
403701.000 3432521.400 0.317
402682.750 3432727.350 0.316
402835.400 3431561.150 0.315
403957.775 3431203.900 0.313
405159.775 3431120.150 0.309
405918.250 3430149.075 0.307
405902.700 3428908.500 0.306
405051.075 3428616.450 0.306
404963.950 3427407.225 0.304
405570.675 3426347.950 0.304
406407.800 3425479.275 0.304
406799.425 3424354.200 0.303
407590.800 3423501.200 0.302
408119.375 3422490.975 0.301
408033.050 3421648.575 0.300
407924.425 3420566.700 0.300
通过使用上述代码,我能够创建15个数据帧。如何将名称分配给所有数据帧?我使用了以下代码:
for (i in 1:15){
assign(paste0("watersurf",i),read.table(paste0("D:/water-surf/","water-surf-",i,".dat"),header=F,skip=1,sep=""))
names(paste0("watersurf",i))<- c("X","Y","Z")
}
在有人提出更好的解决方案之前,请将第一个循环更改为:
for (i in 1:15){
Data <- read.table(paste0("D:/water-surf/","water-surf-",i,".dat"),header=F,skip=1))
names(Data) <- c("X", "Y", "Z")
assign(paste0("watersurf", i), Data)
}
for(1:15中的i){
数据如果我理解您的问题,您正在尝试将多个文本文件合并到单个数据框中,然后重命名列。使用plyr
require(plyr)
# set working directory
setwd("D:/water-surf/")
# check that works for 1 file
table_1 <- read.table("./water-surf-1.dat", header= F, skip= 1, sep= "")
# import all files
files <- dir("D:/water-surf/") # declare the file directory
table_all <- ldply(files, read.table, stringsAsFactors= TRUE, header= F,
skip= 1, sep= "")
# rename the columns
names(table_all) <- c("var_1", "var_2", "var_3")
require(plyr)
#设置工作目录
setwd(“D/水面/”)
#检查是否适用于1个文件
表1它不起作用,因为paste0(“watersurf”,i)
返回一个字符串。@SeñorO:谢谢你澄清这一点。有没有其他方法可以更改colname?我不知道,尽管可能有一些方法。也许你最好在第一个循环中这样做,你(1)将数据读取到一个临时对象,(2)更改colname,(3) 指定对象名称。