有没有办法在执行 read.table 时限制 seps 的数量?

Gon*_*yee 7 r

我有一段文本数据想要预处理,该数据的形式为:

[num|num|<String>]
Run Code Online (Sandbox Code Playgroud)

"|"但是, <String> 中有空格、逗号和。因此,不可能使用 来分离数据"|"。检索数据时如何实现分区数或读取行数的限制?我尝试使用flush = TRUE,但无法使用它,因为它删除了 <String> 的某些部分。

jay*_*.sf 5

你可能有这样的事情。

123|1234|foo, bar | baz
021|3874|foo, bar | baz
123|1234|foo, bar | baz
123|1234|foo, bar | baz
Run Code Online (Sandbox Code Playgroud)

(?<=\\d)如果之前有数字,您可以使用后视"|"

readLines('tmp.txt') |>
  strsplit('(?<=\\d)\\|', perl=TRUE)
# [[1]]
# [1] "123"            "1234"           "foo, bar | baz"
# 
# [[2]]
# [1] "021"            "3874"           "foo, bar | baz"
# 
# [[3]]
# [1] "123"            "1234"           "foo, bar | baz"
# 
# [[4]]
# [1] "123"            "1234"           "foo, bar | baz"
Run Code Online (Sandbox Code Playgroud)

注:使用 R >= 4.1。


数据:

write(file='tmp.txt',
'123|1234|foo, bar | baz
021|3874|foo, bar | baz
123|1234|foo, bar | baz
123|1234|foo, bar | baz'
)
Run Code Online (Sandbox Code Playgroud)

  • 使用“strsplit”的好技巧,点赞! (3认同)