Ответ 1
Это доставит вас туда:
ddf[xx] <- NA
# a b c d e f
#1 1 2 NA NA NA NA
#2 1 2 NA NA NA NA
#3 1 2 NA NA NA NA
#...
Вы не можете напрямую использовать что-то вроде ddf$xx
потому что это попытается присвоить столбец с именем xx
вместо интерпретации xx
. Вам нужно использовать [
и [<-
функции, используя квадратные скобки, когда вы имеете дело с символьной строкой/вектором, например ddf["columnname"]
или ddf[c("col1","col2")]
.
Причина, по которой он выбирает столбцы, заключается в том, что data.frames
по сути являются списками:
is.list(ddf)
#[1] TRUE
as.list(ddf)
#$a
# [1] 1 1 1 1 1 1 1 1 1 1
#
#$b
# [1] 2 2 2 2 2 2 2 2 2 2
... с каждым столбцом, соответствующим записи в списке. Поэтому, если вы не используете запятую для указания строки, например ddf["name",]
или столбца, например ddf[,"name"]
, вы получите столбец по умолчанию.