在R中读取和命名多个.txt文件

时间:2015-06-14 13:24:57

标签: r lapply read.table

我想在R中读取并命名多个.txt文件。更清楚(示例):我有2个子文件夹,每个子文件夹有三个.txt文件(它们具有相同的名称)。子文件夹'测试'有3个.txt文件,名称为' alpha.txt',' bita.txt',' gamma.txt'和子文件夹' train'有3个.txt文件,名称为' alpha.txt',' bita.txt',' gamma.txt'。我使用以下代码:

files <- dir(recursive=TRUE,pattern ='\\.txt$')
List <- lapply(files,read.table,fill=TRUE)

给出一个包含6个元素的List,每个元素都是一个数据。我知道第一个元素是“alpha&#39;从测试文件夹,第二个元素&#39; bita&#39;从测试文件夹等。但是由于文件更多,我想阅读数据以便在环境中变量:&#39; test_alpha&#39;,&#39; test_bita&#39;,&#39; test_gamma&#39;,& #39; train_alpha&#39;&#39; train_bita&#39;&#39; train_gamma&#39 ;.有办法吗?

1 个答案:

答案 0 :(得分:1)

我在工作目录/train/test中创建了两个文件夹。我们创建了两个数组,并将它们写入每个文件夹。

df1 <- data.frame(matrix(rnorm(9), 3, 3))
df2 <- data.frame(matrix(runif(12), 4,3))
write(df1, './test/alpha.txt')
write(df2, './train/alpha.txt')

我们运行您的代码:

files <- dir(recursive=TRUE,pattern ='\\.txt$')
List <- lapply(files,read.table,fill=TRUE)

files
[1] "test/alpha.txt"  "train/alpha.txt"

它可以隔离我们需要的文件。接下来我们取出正斜杠和文件扩展名。

newnames <- gsub('/', '_', files)
newnames1 <- gsub('\\.txt', '', newnames)
newnames1
[1] "test_alpha"  "train_alpha"

现在可以将此向量分配给List以命名每个数组。

names(List) <- newnames1
List
$test_alpha
          V1          V2         V3         V4        V5
1 -0.6594299 -0.01881557  0.7076588 -0.7096888 0.3629274
2 -1.4401000  1.59659000 -1.9041430  2.3079960        NA

$train_alpha
         V1        V2        V3        V4        V5
1 0.9307107 0.6257928 0.6903179 0.5143920 0.6798936
2 0.3652738 0.9297527 0.1902556 0.7243708 0.4541548
3 0.5565041 0.5276907        NA        NA        NA