我有一个2546个csv文件的列表,每个文件有不同数量的列和行。已经作为列表导入所有这些文件如下:
temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.csv)
由于每个csv都有两个标题行,并且需要这两个信息才能在最后加入所有csv,我想请你帮忙,因为我只能为其中一个这样做:
headers <- read.csv("filename.csv", nrows=2, header=FALSE)
headers_names <- sapply(headers,paste,collapse="_")
data <- read.csv(file="filename.csv", skip = 2, header=FALSE, stringsAsFactors = F)
names(data) <- headers_names
以下是其中一个数据集的示例:
TimeDate Hostname VCORE X.1.5V AVSB X3VCC X.5V X.12V
1 TimeDate Hostname Voltage Voltage Voltage Voltage Voltage Voltage
2 2018-02-15T12:00:45+00:00 TL-1337H1DE2018 1.728 1.56 3.312 3.36 5.16 3.072
3 2018-02-15T12:01:45+00:00 TL-1337H1DE2018 1.728 1.56 3.312 3.36 5.16 3.072
4 2018-02-15T12:02:45+00:00 TL-1337H1DE2018 1.728 1.56 3.312 3.36 5.16 3.072
5 2018-02-15T12:03:45+00:00 TL-1337H1DE2018 1.728 1.56 3.312 3.36 5.16 3.072
6 2018-02-15T12:04:45+00:00 TL-1337H1DE2018 1.728 1.56 3.312 3.36 5.16 3.072
它需要一个for循环,因为它是一个列表,但已经尝试了好几次都没有成功。
将一个有效的东西包装到函数fun1
中,该函数将文件名fileN
作为参数。
fun1<-
function(fileN) {
headers <- read.csv(fileN, nrows=2, header=FALSE, stringsAsFactors = FALSE)
headers_names <- sapply(headers,paste,collapse="_")
data <- read.csv(file=fileN, skip = 2, header=FALSE, stringsAsFactors = FALSE)
names(data) <- headers_names
return(data)
}
现在应用于temp
中的所有文件名。
ans<-
lapply(temp, fun1)