我必须用R读取一个文件,其中可变数量的列由|字符分隔.但是,如果它前面有一个\它不应该被视为分隔符.
我首先想到的东西strsplit(x, "[^\\][|]")会起作用,但这里的问题是每个管道前的字符都被"消耗"了:
> strsplit("word1|word2|word3\\|aha!|word4", "[^\\][|]")
[[1]]
[1] "word" "word" "word3\\|aha" "word4"
Run Code Online (Sandbox Code Playgroud)
有谁能建议这样做的方法?理想情况下,它应该被矢量化,因为有问题的文件非常大.
我相信这有效; 使用Anirudh的downvoted答案(不确定为什么downvote,它不起作用,但正则表达式是正确的)
strsplit(x, "(?<!\\\\)[|]", perl=TRUE)
## > strsplit(x, "(?<!\\\\)[|]", perl=TRUE)
## [[1]]
## [1] "word1" "word2" "word3\\|aha!" "word4"
Run Code Online (Sandbox Code Playgroud)