首页 > 解决方案 > Colon-Equals 运算符的正确用法

问题描述

我在 R 中使用 := 在我的数据集中执行一些操作,但是我正在实现的用法会引发错误。

我尝试使用 c() 等其他函数来创建子集,但我需要一些有效的东西,显然 := 应该为我完成这项工作。使用子集函数,我有很多中间数据帧,这当然是不必要的。

#preprocessing steps for getting rid of the null values rows 
df_data[Quantity<=0,Quantity:=NA]
df_data[UnitPrice<=0,UnitPrice:=NA]
df_data <- na.omit(df_data)

(从控制台):

> df_data[Quantity<=0,Quantity:=NA]
Error in `:=`(Quantity, NA) : 
 Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(":=").

标签: rdata.tabledata-sciencecolon-equals

解决方案


:=仅适用于 data.tables

这应该工作

df_data <- data.table(Quantity = -5:5)
df_data[Quantity<=0,Quantity:=NA]
na.omit(df_data)

这将产生错误

df_data <- data.frame(Quantity = -5:5)
df_data[Quantity<=0,Quantity:=NA]
na.omit(df_data)

也就是说,如果您只是过滤掉小于 0 的值,您可以这样做

df_data <- df_data[Quantity > 0 & UnitPrice > 0]

推荐阅读