【问题标题】:How to read "paired data" into an R data.table? Using an R list?如何将“配对数据”读入 R data.table?使用 R 列表?
【发布时间】:2017-01-20 07:53:56
【问题描述】:

假设我在 R 中有一个 data.table

library("data.table")
DT = data.table(x=c("b","b","b","a","a","a"),v=rnorm(6))

> DT
       x           v
    1: b  0.77399102
    2: b  0.71450334
    3: b  0.07187842
    4: a -0.88098815
    5: a -0.90192891
    6: a  0.66439642

我为x 字段提供了一个向量,为v 字段提供了一个向量,每个都有6 个项目。

但是,您会看到我提供了三次b 和三次a。这是一个键值对,即

'b' : '0.77399102', '0.71450334', '0.07187842'
'a' : '-0.88098815', '-0.90192891', '0.66439642'

在 R 中,可以将其实现为列表,即

pairs = list(b = c('0.77399102', '0.71450334', '0.07187842'), 
             a = c('-0.88098815', '-0.90192891', '0.66439642'))

我想将 R 列表 pairs 输入到 data.table。这可能吗?我很困惑如何用这个对象定义xv 字段。如果这是不可能的,人们将如何做到这一点?

【问题讨论】:

  • pairs 输入data.table 后,您希望得到什么结果?
  • data.table(pairs = pairs) 有什么问题? data.framedata.table 都支持列表列。
  • 您的数据是如何开始的?如果它在 XML 或 JSON 中,则有很好的包可以将其解析为 R 对象...
  • 虽然pairs格式更优雅,但您可能会发现DT更容易用于分析。列表列很慢并且需要繁琐的语法。
  • @Frank 我问的原因是因为替代方法似乎是在向量中明确列出这些值,例如x=c("b","b","b","a","a","a")。这样我肯定会犯错

标签: r list dictionary dataframe data.table


【解决方案1】:

使用data.table(x = names(pairs), v = pairs)。这也适用于data.frame

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 2019-09-02
    • 2017-05-12
    • 2013-11-10
    相关资源
    最近更新 更多