以下R代码生成一个列表,其中包含从单个目录中读取的50个csv文件的内容。每个csv文件都有不同的行数。
fs <- list.files(my_dir, pattern=".csv$",full.names=TRUE)
l <- lapply(fs, read.csv, stringsAsFactors=FALSE)
当我查看列表时,我需要摆脱一些行,以便我可以将列表转换为单个数据帧。有三种&#34;问题&#34;行:
[[I]]
开头的行,其中I
是整数1:50
,对应于导入的csv文件的序列,501.csv,502.csv等Error in list.files(my_dir, pattern = ".csv$", full.names = TRUE, row.names = FALSE)
。我也尝试将skip = 1添加到我的lapply函数中。它删除了列名,但创建了一个不同的问题:在行的第一个和最后一个字段的前面附加了一个X,其中包含与每个csv文件关联的第一个观察点。下面是str(l)和dput(sapply(l,head,1))的输出。我只使用两个部分文件在测试环境中运行它。
> str(l)
List of 2
$ :'data.frame': 100 obs. of 4 variables:
..$ Date: chr [1:100] "12/31/95" "1/1/96" "1/2/96" "1/3/96" ...
..$ sub1: num [1:100] NA NA NA NA NA NA NA NA NA NA ...
..$ sub2: num [1:100] NA NA NA NA NA NA NA NA NA NA ...
..$ tech: int [1:100] 503 503 503 503 503 503 503 503 503 503 ...
$ :'data.frame': 66 obs. of 4 variables:
..$ Date: chr [1:66] "7/4/98" "7/5/98" "7/6/98" "7/7/98" ...
..$ sub1: num [1:66] NA NA 1.62 NA NA 1.32 NA NA 1.9 NA ...
..$ sub2: num [1:66] NA NA 1.39 NA NA 0.506 NA NA 1.06 NA ...
..$ tech: int [1:66] 504 504 504 504 504 504 504 504 504 504 ...
> dput(sapply(l, head, 1))
structure(list("12/31/95", NA_real_, NA_real_, 503L, "7/4/98",
NA_real_, NA_real_, 504L), .Dim = c(4L, 2L), .Dimnames = list(
c("Date", "sub1", "sub2", "tech"), NULL))
答案 0 :(得分:0)
没有&#34;对&#34;或&#34;左&#34; R
中名称的理由。如果您不想要标题,请在headers=FALSE
来电中使用参数read.csv
。
由于对read.csv
不熟悉,您的其他问题也会乍一看。我建议您使用read.csv(file_name, header=FALSE)
阅读单个文件并尝试其他参数,例如fill
,直到您确信自己正在阅读所需的文件内容。