Этот вопрос вызван ошибкой, зарегистрированной здесь Абиэлем Рейнхартом а> на data.table
. Я заметил, что то же самое происходит и на data.frame
.
Вот пример:
DF <- data.frame(x=1:5, y=6:10)
> DF*DF
x y
1 1 36
2 4 49
3 9 64
4 16 81
5 25 100
> class(DF*DF) # [1] "data.frame"
> DF^2
x y
[1,] 1 36
[2,] 4 49
[3,] 9 64
[4,] 16 81
[5,] 25 100
> class(DF^2) # [1] "matrix"
Почему «^» принуждает его к матрице? Любые идеи? Обратите внимание, что парсер преобразует **
в ^
. Таким образом, выполнение DF**2
даст тот же результат, что и DF^2
.
Я не нахожу ничего, связанного с этим принуждением в ?`^`
.
Редактировать: ответ Нила ясно показывает причину, по которой ^
возвращает matrix
при работе с data.frame
. Было бы здорово, если бы можно было ответить и на вопрос, почему ^
отсутствует в этом фрагменте кода.
Изменить 2: я также опубликовал здесь, в R-help и получил ответ от Дункана, что, похоже, нет информации о рег. это изменение в НОВОСТЯХ (правда, это довольно старое изменение, на что также указали Джошуа и Дункан).