我在将 1 个名为 data.all 的 df 中的 1 列合并到我的工作 df 调用数据时出现此错误
setDT(data)[setDT(data.all), RX_HOSP_SURG_APPR_2010 := i.RX_HOSP_SURG_APPR_2010, on=c("PUF_CASE_ID","SR_ID" )]
警告信息:在
[.data.table
(setDT(data), setDT(data.all),:=
(RX_HOSP_SURG_APPR_2010, : 将双 RHS 强制为逻辑以匹配目标列的类型(名为 'RX_HOSP_SURG_APPR_2010' 的列 157)。如果目标列的逻辑类型正确,则最好避免强制并将 RHS 创建为逻辑类型. 要实现这一点,请考虑 R 的类型后缀:typeof(0L) vs typeof(0) 和 typeof(NA) vs typeof(NA_integer_) vs typeof(NA_real_)。您可以使用 as.logical() 包装 RHS 以避免此警告, 但这仍然会执行强制。如果目标列的类型不正确,最好重新访问创建 DT 的位置并在那里修复列类型;例如,通过在 fread() 中使用 colClasses=。否则,您可以更改现在通过在其顶部插入一个新列(所需类型的)来获得列类型;例如 DT[,RX_HOSP_SURG_APPR_2010
:=as.double(RX_HOSP_SURG_APPR_2010
)]。如果 := 的 RHS 具有 nrow(DT) 元素,则分配称为列 plonk 并且是更改列类型的方法。可以使用 sapply(DT,typeof) [... truncated] 观察列类型
我尝试了不同的方法,但我无法弄清楚
str(data$RX_HOSP_SURG_APPR_2010)
逻辑 [1:8671] 错误 错误 错误 NA NA NA ...
str(data.all$RX_HOSP_SURG_APPR_2010)
'haven_labelled' num [1:129296] 0 0 NA NA NA NA NA NA NA NA ... - attr( , "label")= chr "该设施 2010 年及以后的手术方法" - attr( , "format.spss ")= chr "F1.0" - attr( , "display_width")= int 23 - attr( , "labels")= Named num [1:7] 0 1 2 3 4 5 9 ..- attr(*, “names”)= chr [1:7] “原发部位无外科手术”“机器人辅助”“机器人转开放”“腹腔镜”...
任何建议将被认真考虑。