【问题标题】:Reading and naming multiple .txt files in R在 R 中读取和命名多个 .txt 文件
【发布时间】:2015-06-14 13:24:57
【问题描述】:

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

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

它给出了一个包含 6 个元素的列表,每个元素都是一个数据帧。我知道第一个元素是测试文件夹中的“alpha”,第二个元素是测试文件夹中的“bita”,依此类推。但是随着文件越来越多,我想读取数据以便在环境变量中包含:'test_alpha','test_bita','test_gamma','train_alpha','train_bita','train_gamma'。有办法吗?

【问题讨论】:

  • 使用names(List) &lt;- files,您可以为列表的每个元素分配名称标题。从那里,您可以准确指定您想要的文件名的哪个方面。 names(List) &lt;- gsub('(.*)\\.txt', '\\1', files) 之类的名称或您想要保留的其他名称。此外,您还需要上一级目录的一个方面,也可以在其中工作。

标签: r lapply read.table


【解决方案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

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2021-03-29
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多