Я уверен, что это довольно просто, но я бы хотел действительно понять логику структур данных R. Здесь
Если я подставлю матрицу по индексу изя получаю именно эту ошибку:
m <- matrix(data = c("foo", "bar"), nrow = 1)
m[2,]
# Error in m[2, ] : subscript out of bounds
Если я делаю то же самое, делаю фрейм данных, однако я получаю все NA
строки :
df <- data.frame(foo = "foo", bar = "bar")
df[2,]
# foo bar
# NA <NA> <NA>
Если я помещаю в несуществующий фрейм данных столбец , я получаю знакомое
df[, 3]
# Error in `[.data.frame`(df, , 3) : undefined columns selected
Я знаю (примерно), что строки фрейма данных странные и требуют осторожного обращения,но я не совсем вижу связь с вышеуказанным поведением.
Может кто-нибудь объяснить , почему R ведет себя таким образом для несуществующих строк df?
Обновление
Конечно, значение NA
для подмножеств вне границ - это нормальное R поведение для одномерных векторов:
vec <- c("foo", "bar")
vec[3]
# [1] NA
Таким образом, в некотором смысле, странный из здесь - это матричное подмножество, а не подмножество данных, в зависимости от того, с чего вы начинаете.Тем не менее, другое поведение двумерного поднабора (m[2, ]
против df[2, ]
) может показаться непоследовательным для плотного пользователя (как я сейчас).