gpt4 book ai didi

r - I(x) := y and `:=` (I(x) = y) 之间差异的 data.table 错误

转载 作者:行者123 更新时间:2023-12-01 15:20:29 25 4
gpt4 key购买 nike

遇到我认为是 data.table 中的错误:

可重现的例子:

d.test <- data.table(a = 1:5)
newName <- "Moose"

这个有效:

d.test[, I(newName) := a + 1]

这不是:

d.test[, `:=`(I(newName) = a + 1)]

是否有第二个版本不起作用的原因?这是一个错误还是 data.table 的工作方式中有我遗漏的更微妙的东西?

最佳答案

I(newName) 是一个函数调用。您不能作为 = 的 LHS 进行调用。这不是特定于 data.table 的。

语言定义在描述函数求值时没有明确说明,但它 says for formal arguments :

a statement of the form ‘symbol = expression’

在你的例子中我们有:

is.symbol(quote(I(newName)))
#[1] FALSE
is.call(quote(I(newName)))
#[1] TRUE

为了说明它在 base R 中也不起作用:

foo <- "bar"
list(I(foo) = 1)
Error: unexpected '=' in "list(I(foo) ="

这表明解析器在调用后不期望 =

关于r - I(x) := y and `:=` (I(x) = y) 之间差异的 data.table 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48281015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com