Этот вопрос мотивирован ошибкой поданной здесь Abiel Reinhart на 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, и получил ответ от Duncan, что, похоже, нет никакой информации. это изменение в новостях (по общему признанию, это довольно старое изменение, как указывали Джошуа и Дункан).