如何通过mapply或任何循环将变量导入R并分配给R?

时间:2019-06-26 15:10:24

标签: r loops

我有一个名为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))

但是我知道此语法不正确。他们有什么办法实现这一目标?

2 个答案:

答案 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个文件提供一个单独的数据框!