我与R有一些基本的混淆。我有一段R代码。
> m <- 1:10
> m
[1] 1 2 3 4 5 6 7 8 9 10
> dim(m) <- c(2,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
现在我是一名C / Python程序员,而dim(m) <- c(2,5)
行让我感到非常困惑。我意识到它有效地将矢量变成了矩阵,但是看着它我不理解逻辑/操作顺序。
<-
是R中的赋值运算符。所以对我来说,逻辑上操作的顺序是:将(2,5)分配给dim(m)的输出。由于dim(m)的输出未分配给变量,因此输出将丢失。
有人可以解释我应该如何读取dim(m) <- c(2,5)
行吗?操作顺序是什么?似乎使用<-
进行操作的顺序取决于等式的LHS 和 RHS。
答案 0 :(得分:4)
这些是称为替换函数的特殊函数。我引用哈德利的高级R书:
替换函数的作用就像它们修改了它们的参数,并具有特殊名称xxx&lt; - 。它们通常有两个参数(x和value),虽然它们可以有更多,但它们必须返回修改后的对象。例如,以下函数允许您修改向量的第二个元素:
`second<-` <- function(x, value) {
x[2] <- value
x
}
x <- 1:10
second(x) <- 5L
x
#> [1] 1 5 3 4 5 6 7 8 9 10
当R计算赋值second(x)&lt; - 5时,它注意到&lt; - 的左侧不是简单名称,因此它查找名为second&lt; - 的函数来进行替换。
您可以查看替换功能标题下的完整章节here。