【问题标题】:How to read in list from file in R?如何从R中的文件中读取列表?
【发布时间】:2012-05-05 15:02:49
【问题描述】:

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

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

如何从此类文件中以列表形式读取数据?

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

【问题讨论】:

  • 这是对象的唯一人类可读表示:尝试将其转换回列表会很麻烦且容易出错。将其保存为对象更安全、更容易,可以使用 save/load 或者,如果您想要既便携又可读的东西,则使用 RJSONIO 包中的 toJSON/fromJSON。跨度>
  • 我知道,但问题是有人以这种方式保存了列表(使用 sink() ),现在我必须再次将其作为列表读取。

标签: r list types


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2012-11-17
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    相关资源
    最近更新 更多