我有一个包含多个分隔符的文本文件.这是一个数据样本:
12 ->3 4 5
14->2 1
1->3 5 6
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种简单的方法来获取以下格式的数据:
12 3
12 4
12 5
14 2
14 1
1 3
1 5
1 6
Run Code Online (Sandbox Code Playgroud)
我试图重现你的情况,cat
并希望它是你真正拥有的.所以我们说这是你的文件
cat("12 ->3 4 5
14->2 1
1->3 5 6",
file = "test.txt")
Run Code Online (Sandbox Code Playgroud)
使用data.table
,我通过指定一些错误的分隔符快速读取它,因此结果将是单列数据集
library(data.table)
dt <- fread("test.txt",
sep = ",",
header = FALSE)
Run Code Online (Sandbox Code Playgroud)
下一步是双重拆分,首先分离箭头(->
)两侧的数字,然后按组拆分
dt[, tstrsplit(V1, "\\s*->\\s*", type.convert = TRUE)
][, strsplit(V2, "\\s+"), by = .(indx = V1)]
# indx V1
# 1: 12 3
# 2: 12 4
# 3: 12 5
# 4: 14 2
# 5: 14 1
# 6: 1 3
# 7: 1 5
# 8: 1 6
Run Code Online (Sandbox Code Playgroud)