我有以下数据.表:
dt <- data.table(col1 = rep("a",6), col2 = c(1,1,1,2,3,1))
现在我想用"bigDog"值替换col2中的所有1.我可以用数据来做.框架精神:
dt$col2[dt$col2==1,] <- "bigDog"
但我想知道是否有不同的方式,更多的"data.table oriented"?
我有以下数据.表:
dt <- data.table(col1 = rep("a",6), col2 = c(1,1,1,2,3,1))
现在我想用"bigDog"值替换col2中的所有1.我可以用数据来做.框架精神:
dt$col2[dt$col2==1,] <- "bigDog"
但我想知道是否有不同的方式,更多的"data.table oriented"?
如果您不想更改列的类型,您可以这样做:
dt[col2 == 1, col2 := 123]
通过类型更改,您可以执行以下操作:
dt[, col2 := as.character(col2)][col2 == "1", col2 := "bigDog"]
如果不先更改类型,"bigDog"将被强制为整数,即NA
.当然,你也会收到一大堆警告.
请注意,除了不那么麻烦的语法之外,使用:=
还有一个优点,即不需要制作额外的数据副本(正如<-
所做的那样),而是可以进行适当的修改.