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