我有一个名为working_dir
的变量列表,其中包含要导入的文件的名称
working_dirs
$`./.\\dataset/UCI HAR Dataset/test/Inertial Signals`
[1] "body_acc_x_test.txt" "body_acc_y_test.txt" "body_acc_z_test.txt" "body_gyro_x_test.txt"
[5] "body_gyro_y_test.txt" "body_gyro_z_test.txt" "total_acc_x_test.txt" "total_acc_y_test.txt"
[9] "total_acc_z_test.txt"
$`./.\\dataset/UCI HAR Dataset/train/Inertial Signals`
[1] "body_acc_x_train.txt" "body_acc_y_train.txt" "body_acc_z_train.txt" "body_gyro_x_train.txt"
[5] "body_gyro_y_train.txt" "body_gyro_z_train.txt" "total_acc_x_train.txt" "total_acc_y_train.txt"
[9] "total_acc_z_train.txt"
我想用read.table()
导入每个文件,并用文件名命名。我的想法是使用mapply()
并将每个参数传递到assign()
函数中。像
mapply(assign , working_dir, read.table(working_dir , header = T))
但是我知道此语法不正确。他们有什么办法实现这一目标?
答案 0 :(得分:0)
尝试一下:
ldf=mapply(function(x,y){read.table(paste0(x,y,sep="/"),header=TRUE)},working_dir,names(working_dir))
答案 1 :(得分:0)
我写的对我有用的脚本。
library(stringr)
folders <- list.dirs()
working_dirs <- lapply( folders, function(x){ list.files(x , full.names = T) })[c(5 ,7)]
for(i in 1:length(working_dirs)){
dire <- working_dirs[[i]]
direnames <- str_extract(working_dirs[[i]] , pattern = "(test|train)(.*)(\\.txt)?")
for (ii in 1:length(dire)){
assign(direnames[ii] , read.table(dire[ii]))
}
}
这将为18个文件提供一个单独的数据框!