0

我在 sink() 创建的文件中写入了列表 - “file.txt”。该文件包含一个列表,如下所示,并且仅包含数字:

[[1]]
[1] 1 2
[[2]]
[1] 1 2 3

如何从此类文件中读取数据作为列表?

编辑: 我将尝试将其作为字符串读取,然后使用一些正则表达式删除'[[*]]''[*]'用特殊符号替换 - 让它成为'@'。然后取出 之间的每个子字符串'@',将其拆分为向量并放入空列表中。

4

1 回答 1

1

像这样的东西应该可以解决问题。(确切的细节可能会有所不同,但至少这会给你一些想法。)

l <- readLines("file.txt")

l2 <- gsub("\\[{2}\\d+\\]{2}", "@", l)          # Replace [[*]] with '@'
l3 <- gsub("\\[\\d+\\]\\s", "", l2)[-1]         # Remove all [*]
l4 <- paste(l3, collapse=" ")                   # Paste together into one string
l5 <- strsplit(l4, "@")[[1]]                    # Break into list
lapply(l5, function(X) scan(textConnection(X))) # Use scan to convert 2 numeric
# [[1]]
# [1] 1 2
# 
# [[2]]
# [1] 1 2 3
于 2012-04-25T00:21:20.917 回答