我有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循环,但是已经尝试了几次而没有成功。
答案 0 :(得分:0)
将可以工作的一件事包装到以文件名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)