我有以下数据.表:

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.当然,你也会收到一大堆警告.

请注意,除了不那么麻烦的语法之外,使用:=还有一个优点,即不需要制作额外的数据副本(正如<-所做的那样),而是可以进行适当的修改.

R相关问答推荐

将coord_sf与geom_spatraster一起使用会更改分辨率

用apply/map/etch替换循环以加快速度

如何按行和列组合多个格式?

feature_weights参数没有影响Xgboost

如何提高以键ID为列的表中键查找的效率?

如何判断某列中由某些行组成的百分比

高质量地将R格式的图表从Word中输出

如何删除多个.CSV文件的行

在GGPLATE中将突出的点放在前面

使用列/行匹配将两个不同维度的矩阵相加

找出二叉树中每个 node 在R中的深度?

如何在PackageStatus()中列出&q;不可用的包&q;?

过滤名称以特定字符串开头的文件

为左表中的所有行使用值Fill滚动左连接

根据约束随机填充向量的元素

Geom_arcbar()中出错:找不到函数";geom_arcbar";

将统计检验添加到GGPUBR中的盒图,在R

R -基线图-图形周围的阴影区域

具有自定义仓位限制和计数的GGPLATE直方图

使用&Fill&Quot;在gglot中创建 colored颜色 渐变