首页 > 解决方案 > 为什么 := 运算符在不同的结构中表现不同?

问题描述

我试图在 r 中使用 := 运算符来分配我在函数中提供的名称的变量。
为了在分配多个变量时保持代码可读性,我想使用:=(paste0("var",i)=3) 构造。但它的行为似乎与 paste0("var",i):=3 构造不同。

这是 := 的预期行为还是我错过了什么?我可以做些什么来使:=构造工作吗?

例子:

dt<-data.table(var1=1:10)
#This works fine:
dt[,paste0("var",1):=3]
#But this throws an error:
dt[,`:=`(paste0("var",1)=3)]
Error: unexpected '=' in "dt[,`:=`(paste0("var",1)="

标签: rsyntaxdata.tableoperator-keyword

解决方案


这不是一个真正的data.table问题,而是一个 R 问题:

list(paste0('var', 1) = 3)

错误:“list(paste0('var', 1) =”中的意外'='

要构造这样的名称,请:=用作中缀运算符:

dt[ , paste0('var', 1) := 3]

推荐阅读