【问题标题】:Data.table using computed field in consecutive computation [duplicate]在连续计算中使用计算字段的 Data.table [重复]
【发布时间】:2018-02-18 15:57:18
【问题描述】:

我目前正在使用 R 中的 data.table 包来生成其他列。我打算在连续/连续步骤中使用任何计算值。

比如我有这样的数据

Data <- data.table(a = 1, b = 2)

我要计算:

列“c”=列“a”(给定)+列“b”(给定)

列“d” = 列“c” * 0.40(这里有一些其他函数)

我使用了以下代码:

Data[ ,`:=`((c = a + b), (d = c * 0.40))]

我收到一个错误,因为我遵循这种方法说明

“c”列不存在。

我打算多次执行这些操作,并且不打算拆分这些代码。

有没有一种方法可以在不将代码拆分为多个部分并确保将输出写入同一个 data.table 的情况下执行此操作? 谢谢

【问题讨论】:

  • 我想这个问题之前已经回答过了,但是现在找不到了。一些替代方案:(1a) LHS := RHS 表格:Data[ , c("c", "d") := .(c &lt;- a + b, c * 2)]; (1b) 稍微详细一点,使用{ }: Data[ , c("c", "d") := {c &lt;- a + b; .(c , c * 2)}]: (2) 函数形式:Data[ , `:=`(c = c &lt;- a + b, d = c * 2)]。相关:data.table: anonymous function in j.
  • 话题也在this open issue讨论
  • 什么原因,为什么chaining Data[, c := a + b][, d := c * 0.40]不能使用?

标签: r data.table


【解决方案1】:

一些替代方案:

  1. 左轴:=右轴表格

(a)Data[ , c("c", "d") := .(c &lt;- a + b, c * 2)]

(b) 稍微详细一点,使用{ }

Data[ , c("c", "d") := {
  c <- a + b
  .(c , c * 2)}]

(2) 函数形式

Data[ , `:=`(c = c <- a + b, d = c * 2)]

另见:

data.table: anonymous function in j

这个话题也在this issue讨论过

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2020-01-23
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多