【发布时间】: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。这可能吗?我很困惑如何用这个对象定义x 和v 字段。如果这是不可能的,人们将如何做到这一点?
【问题讨论】:
-
将
pairs输入data.table后,您希望得到什么结果? -
data.table(pairs = pairs)有什么问题?data.frame和data.table都支持列表列。 -
您的数据是如何开始的?如果它在 XML 或 JSON 中,则有很好的包可以将其解析为 R 对象...
-
虽然pairs格式更优雅,但您可能会发现
DT更容易用于分析。列表列很慢并且需要繁琐的语法。 -
@Frank 我问的原因是因为替代方法似乎是在向量中明确列出这些值,例如
x=c("b","b","b","a","a","a")。这样我肯定会犯错
标签: r list dictionary dataframe data.table