关于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如何从整数中减去矩阵?
答案 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("-")
。