我有一个data.table,其中包含出生年份的“year”列:
library(data.table)
people <- data.table("year" = 1990:1992)
我想将此列重命名为“age”,同时在data.table中计算值:
setnames(people, c("year"), c("age" := 2023 - "age"))
setnames(people, c("year"), c("age" := 2023 - "year"))
为什么我的代码不工作?
2条答案
按热度按时间qyzbxkaa1#
关于“为什么不工作?*",您应该检查
setnames
的用法。当您键入?setnames
时,您会看到以下语法并且参数
new
描述如下:可选。它可以是函数或新列名。如果是一个函数,它将用old调用,并期望返回新的列名。新列名的长度必须与提供给旧参数的列的长度相同。
可以分配新名称,但不能分配命名列
要使其工作,您可以使用以下链接表达式
bis0qfac2#
我们可以使用 setnames 来更改名称,然后计算年龄:
**注意:**Tomas的回答解释了“为什么 setnames 不起作用”。这个答案是遵循OP使用 setnames 的初衷,表明可以在 setnames 之后链接
[]
。