【发布时间】:2013-11-26 17:03:03
【问题描述】:
这个问题是由data.table 上的bug filed here by Abiel Reinhart 提出的。我注意到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 相同的结果。
我在?`^` 中找不到与此强制相关的任何内容。
编辑:Neal 的回答清楚地表明了^ 在对data.frame 进行操作时返回matrix 的原因。如果关于为什么 ^ 被遗漏在这段代码中的问题也能得到解答,那就太好了。
编辑 2: 我还发布了 here on R-help 并得到了 Duncan 的回复,似乎没有信息注册。新闻中的这种变化(诚然,这是一个相当古老的变化,正如 Joshua 和 Duncan 也指出的那样)。
【问题讨论】:
-
那么它是一个功能请求?除非您更喜欢默认值。
标签: r dataframe operators exponentiation