R如何从整数中减去矩阵

时间:2014-11-06 13:59:42

标签: r matrix

关于R的内部问题。我很好奇是否有人可以解释以下呼叫是如何工作的。

# Let's just work with part of the iris data
data(iris)
df <- iris[1:10, 1:4]

# Now the question
1 - df

R是否会创建另一个等效维度的矩阵?它是否遍历所有元素? R如何从整数中减去矩阵?

1 个答案:

答案 0 :(得分:2)

请注意,您的示例是data.frame而不是矩阵。我将参考data.frame案例。

Ops组泛型调度S3方法(请参阅methods("Ops"))。相关方法是Ops.data.frame。以下是一些由我添加评论的摘录:

#create an unevaluated function call
FUN <- get(.Generic, envir = parent.frame(), mode = "function")
f <- if (unary) 
    quote(FUN(left))
else quote(FUN(left, right))

#...
#a lot of checking and preparations
#...

#loop over the columns, create the function input and evaluate the function call
   for (j in seq_along(cn)) {
        left <- if (!lscalar) 
            e1[[j]]
        else e1
        right <- if (!rscalar) 
            e2[[j]]
        else e2
        value[[j]] <- eval(f)
    }

如果-的参数是整数向量和整数矩阵,则两者都被视为整数向量,但.Primitive("-")保留属性,其中包含dim属性矩阵。另请参阅help("-")