这个问题是由 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"
为什么“^”将其强制转换为矩阵?有任何想法吗?请注意,由解析器**
转换为。^
因此,doingDF**2
的结果与DF^2
.
我在?`^`
.
编辑:尼尔的回答清楚地表明了在 a上操作时^
返回 a的原因。如果也能回答为什么在这段代码中被遗漏的问题,那就太好了。matrix
data.frame
^
编辑 2:我也在R-help 上发帖,得到了 Duncan 的回复,似乎没有信息注册。新闻中的这种变化(诚然,这是一个相当古老的变化,正如 Joshua 和 Duncan 也指出的那样)。