R - 使用自定义行分隔符导入包装的 .txt 文件

R - import wrapped .txt file with custom line separator

我正在尝试将一个 .txt 文件导入到 R 中,行分隔符表示为“\”,列分隔符表示为“*”。但是,每一行都是换行的,我找不到设置自定义行分隔符的函数。

真实文件是我公司的banking 822 edi文件(大约10,000行),所以我无法显示实际文本。但是,美国银行不会在您下载这些文件时解包它们。

我尝试导入的 .txt 文件看起来像这样:

示例文本文件
1*AAA*2*BBB*CC
C*3*DDD

我希望它看起来像这样:

第 1 列 第 2 栏 第 3 列 第 4 栏
1 AAA 2 BBB
2 CCC 3 DDD

我一直无法找到执行此操作的函数,因此将不胜感激。谢谢。

想通了。可能是一种更简洁的方法,但由于没有人回答我会留下我的解决方案以防其他人遇到这个问题。

首先我将整个文本文件作为字符串导入:

filename <- 'BOA 2020-12.txt'
import.dat <- readChar(filename, file.info(filename)$size) 

然后我去掉了当前的换行符:

import.dat <- gsub('[\r\n]','',import.dat)

然后我用换行符替换“\”

import.dat <- gsub('[\r\]','\n',import.dat)

现在我有一个干净的字符串可以解析出来。接下来,我将字符串拆分为每个换行符的单列矩阵。

import.dat <- unlist(strsplit(import.dat,split='\n'))

在这种特定情况下,每一行都有不同长度的列,所以我创建了一个零矩阵(17 是列的最大长度。可以插入它,因为这些类型的文档总是有最大 17列)和 运行 每行的嵌套 for 循环并填充列。

  sub.dat <- as.data.frame(matrix(0,ncol=17,nrow=length(import.dat)))
  for(i in 1:length(import.dat)){
    temp <- unlist(strsplit(import.dat[i],split='\*'))    
    for(j in 1:length(temp)){
      sub.dat[i,j] <- temp[j]
    }
  }

繁荣,简单易行。