我正在使用data.table 1.9.6。下面是一些簡單的代碼和輸出:data.table/data.frame rbind無法正常工作
df <- data.table(a=c(NA,NA,2,2),b=c(1,1,2,2))
nrow(df[is.na(a)]) + nrow(df[!is.na(a)])
# [1] 4
nrow(rbind(df[is.na(a)],df[!is.na(a)]))
# [1] 4
nrow(rbind(df[is.na(a),b := a],df[!is.na(a)]))
# [1] 6
rbind(df[is.na(a),b := a],df[!is.na(a)])
# a b
# 1: NA NA
# 2: NA NA
# 3: 2 2
# 4: 2 2
# 5: 2 2
# 6: 2 2
rbind(df[is.na(a),a := b],df[!is.na(a)])
# a b
# 1: NA NA
# 2: NA NA
# 3: 2 2
# 4: 2 2
# 5: 2 2
# 6: 2 2
基本上只是rbind
後is.na()
和!is.na()
給我優秀成果,但只要我嘗試在列與其他列值rbind(df[is.na(a),a := b],df[!is.na(a)])
東西壞了更換NA
值。相當不合邏輯rbind(df[is.na(a),b := a],df[!is.na(a)])
也打破。任何人都可以解釋我失蹤或這是一個錯誤?
而且讓事情感動我想:
rbind(data.frame(df[is.na(a),a := b]),data.frame(df[!is.na(a)]))
# a b
# 1 NA NA
# 2 NA NA
# 3 2 2
# 4 2 2
# 5 2 2
# 6 2 2
所以即使我將其轉換爲data.frame
這不起作用。
'dt的[條件,西:=等等]'返回整個(現在修改)data.table dt。這就是爲什麼你得到你所得到的。 – eddi