Кажется, что data.frames
наследует имена кодов матриц, если к ним добавлена матрица функцией [
. Пример:Что происходит, когда data.frame получает новые столбцы?
blob <- matrix(11:20, ncol = 1, dimnames = list(NULL, "BLOB"))
foo <- data.frame(FOO = 201:210)
dat <- data.frame(id = 1:10)
dat[, "new1"] <- blob
dat[, "new2"] <- foo
Если я теперь смотрю на dat
, он показывает мне
id BLOB new2
1 11 201
2 12 202
3 13 203
...
Так что не ожидаемый "new1"
показан, но "BLOB"
; даже если colnames(dat)
: "id"
, "new1"
и "new2"
. Кроме того, "BLOB"
нигде не встречается в attributes(dat)
и dat[, "BLOB"]
дает «неопределенные столбцы, выбранные» -error. Два вопроса:
- почему
dat
показывает"BLOB"
и не"new1"
в этом случае? - Как я могу изменить
dat
таким образом, чтобы он отображал"new1"
вместо"BLOB"
?
Возможно, стоит упомянуть, что присвоение 'data.frame' как' foo' для полного столбца аналогично рискованно. '<- foo [[1]]' или '<- foo [, 1]' будет хорошо защищаться. – Gregor
@MrFlick, благодарю вас за ответ. Можете ли вы объяснить (или дать ссылку) тому, что встраиваемые матрицы (включая их назначение) и как R обрабатывают их? – Qaswed