r - 为什么 := 运算符在不同的结构中表现不同?
问题描述
我试图在 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)="
解决方案
这不是一个真正的data.table
问题,而是一个 R 问题:
list(paste0('var', 1) = 3)
错误:“list(paste0('var', 1) =”中的意外'='
要构造这样的名称,请:=
用作中缀运算符:
dt[ , paste0('var', 1) := 3]
推荐阅读
- reactjs - React 中的 AWS Amplify UI 自定义
- typescript - 点燃元素打字稿反映:真
- javascript - 在 React Native 中使用自定义文本时出现内存泄漏
- couchdb - 使用多索引排序查询 Hyperledger Fabric 中的状态级别数据库
- r - 根据逻辑条件从数据框中提取单个值,Tidyverse 风格
- node.js - 使用 NodeJS 在测试中从磁盘读取 - 同步与异步
- r - glmer使用哪个家庭?
- python - 在 TensorFlow 中手动设置梯度值并在反向传播中使用它们
- javascript - Vue.js 中的意外令牌“导出”
- c# - 从 EF Core 2.1 升级到 3.1 后无法在项目之间进行数据库迁移