我有一个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"))

为什么我的代码不起作用?

推荐答案

关于"why not working?",你应该核对一下setnames的用法.当您输入?setnames时,您会看到语法

setnames(x,old,new,skip_absent=FALSE)

自变量new描述如下:

可选的.它可以是一个函数或新的列名.如果一个函数, 它将与old一起调用,并有望返回新列 名字.新列名必须与列的长度相同 提供给旧有的争论.

您可以指定新名称,但不能指定命名列


要使其工作,可以使用如下所示的链接表达式

> people[, age := 2023 - year][, year := NULL][]
   age
1:  33
2:  32
3:  31

R相关问答推荐

R -创建一列,指示另一列是否具有相同的值

Select R中列未排序的收件箱中的最后一个按顺序编号的列

R数据帧中的布尔加法会产生布尔值而不是整值

R通过字符串中的索引连接数据帧r

如何将log 2刻度上的数字转换为自然log

在R中使用自定义函数时如何删除该函数的一部分?

更改网格的crs以匹配简单要素点对象的crs

如何在弹性表中为类别值的背景上色

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

如果索引重复,聚合xts核心数据

R中的子集文件—读取文件名索引为4位数字序列,例如0001到4000,而不是1到4000)

有没有一个R函数允许你从一个数字变量中提取一个数字,而不考虑它的位置(不仅仅是第一个或最后一个数字?

根据模式将一列拆分为多列,并在R中进行拆分

在R中替换函数中的特定符号

在for循环中转换rabrame

par函数中的缩写,比如mgp,mar,mai是如何被破译的?

可以替代与NSE一起使用的‘any_of()’吗?

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

根据r中每行中的日期序列,使用列名序列创建新列