R:根据文件名为多个数据分配ID



我想读入不同参与者的多个数据文件。不过,原始数据不包含参与者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
})

最新更新