【问题标题】:R add an inhomogeneous element to vector and make it a listR向向量添加一个不均匀的元素并使其成为一个列表
【发布时间】:2015-12-23 12:03:14
【问题描述】:

我有一个向量

row = c(Estimate = 1, pvalue = 0.5)  

如何使用矢量row 制作如下列表?

list(name = "class2", Estimate = 1, pvalue = 0.5)

背景:

我正在逐行构造一个data.table

dt = data.table()
dt = rbind(dt, list(name = "class1", Estimate = 0.5, pvalue = 0.7))

现在我计算了另一行,从 lm 的向量开始

row = c(Estimate = 1, pvalue = 0.5)

我想将它附加到dt

如何使用row 制作如下列表

list(name = "class2", Estimate = 1, pvalue = 0.5)

(NB name 是字符,其他列是数字)

顺便说一句,有没有更好的方法来构造data.table?

【问题讨论】:

  • 您的问题不清楚。但是,增长这样的对象是您可以在 R(或任何编程语言)中使用的效率最低的方法。
  • @Roland 我进行了编辑以明确我的问题,谢谢
  • @Roland,效率不仅仅是内存/cpu 问题,如果我的表少于 1000 行,那么最有效的方法是我可以用最少的时间编写代码。此外,对于 data.table(不是 data.frame),这似乎问题较少
  • 不好的做法就是不好的做法。您可能事先知道需要多少行,所以如果您不想学习编写真正高效的代码,您至少可以预先分配,这并不比您现在所做的更难。每次有人使用他们的包时,data.table 开发人员都会感到不寒而栗,该包是为获得最佳性能而编写的,代码效率低下。最后,当您认为 data.table 的问题较少时,您就错了。

标签: r data.table


【解决方案1】:

as.list 可以完成这项工作:

row = c(Estimate = 1, pvalue = 0.5)  
c(as.list(row), name = "class2") 
# $Estimate
# [1] 1
# 
# $pvalue
# [1] 0.5
# 
# $name
# [1] "class2"

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 2015-03-04
    • 1970-01-01
    • 2013-03-09
    • 2022-10-07
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多