я пользуюсь данные.table 1.9.6. Вот некоторый простой код и выход:данные.table/данные.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()
дает мне хорошие результаты, но как только я пытаюсь заменить NA
значения в столбце с другим значением столбца rbind(df[is.na(a),a := b],df[!is.na(a)])
что-то ломается. Довольно нелогично 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
.
'дт [состояние, цв: = ло]' возвращает все (теперь изменено) 'data.table'' dt'. Вот почему вы получаете то, что получаете. – eddi