datatable(:=)列名与全局环境值相同

时间:2018-01-15 04:22:43

标签: r set data.table

有:

> a <- 4
> a
[1] 4
> aDT <- data.table(a = c(1,2), b = c(NA,NA))
> aDT
   a  b
1: 1 NA
2: 2 NA

需要:

> aDT <- data.table(a = c(1,2), b = c(4,4))
> aDT
   a b
1: 1 4
2: 2 4

尝试:

> aDT[,b := rep(a, times = nrow(aDT))]
  

警告讯息:       1:在[.data.table(aDT ,, :=(b,rep(a,times = nrow(aDT))))中:         提供4项将分配给'b'列的2项(2未使用)       2:在[.data.table(aDT ,, :=(b,rep(a,times = nrow(aDT))))中:         强制'双'RHS为'逻辑'以匹配列的类型;可能有截断精度。首先将目标列更改为“double”(通过创建新的'double'向量长度2(整个表的nrows)并分配;即'replace'列),或将RHS强制为'logical'(例如1L,NA_) [real | integer] _,as。*等)使你的意图清晰,速度快。或者,请在创建表格时正确设置列类型,并坚持使用。

如您所见,因为数据表有一个列,其名称与全局环境中的变量之一相同。 如何修复代码?

0 个答案:

没有答案