我想读入不同参与者的多个数据文件。不过,原始数据不包含参与者ID,该ID保存在文件名中。
当我执行以下操作时,参与者ID会依次分配给行,但不会分配给它实际属于的数据
filenames_all <- dir(".", pattern = "*.log")
for(file in 1:length(filenames_all)) {
# load all files
data <- read.csv(filenames_all, sep = "t", dec = ".", header = F)
# assign ID based on filename
data$ID <- substr(filenames_all, 1, 3)
}
理想情况下,我的数据帧应该是这样的:
filenames_all <- list("001-file.log", "002-file.log", "003-file.log")
data <- data.frame(V1 = rnorm(9,0,5),
ID = c("001", "001","001","002","002","002","003","003","003"))
然而它看起来是这样的:
data <- data.frame(V1 = rnorm(9,0,5),
ID = c("001", "002","003","001","002","003","001","002","003"))
非常感谢您的帮助。
试试这个:
data_all = lapply(filenames_all, function(fname) {
data <- read.csv(fname, sep = "t", dec = ".", header = F)
data$ID <- substr(fname, 1, 3)
data
})