R:如何使用符号作为申请的乐趣?
R: how to use symbols as a FUN for apply?
在 R 的申请文档中,它说:
FUN:应用的功能:详见“详情”。对于 +、%*% 等函数,函数名必须用反引号引起来。
后半句没看懂
当我做
matrix1 = matrix(rnorm(3*4), 3, 4)
apply(matrix1, 1, "+")
我得到了矩阵的转置
当我这样做时
apply(matrix, 1, "%*%")
我收到一个错误。
我正在尝试获取此矩阵的逐行和与乘积。
此外,如果这不是文档所讨论的内容,+ 和 %*% 在作为 apply 的 FUN 参数提供时应该做什么?
matrix1 = matrix(rnorm(3*4), 3, 4)
apply(matrix1, 1, "+")
做类似转置的事情,因为它逐行提供 matrix1 对象,returns 将每个操作的值作为列。另一方面,如果您指定了:
apply(matrix1, 2, "+")
不会出现转置,因为始终returns应用其值作为列优先结果。
在第二种情况下,您没有为“%*%
”运算符提供第二个参数。 “+”运算符可以是一元或二元运算符,但“%*%
”运算符始终是二元运算符。 (将“%*%
”与 apply
和单个维度一起使用并没有多大意义,因为“%*%
”实际上是作为独立运算符设计的。如果你想要按行求和,然后使用:
rowSums(matrix1)
但你可以使用更慢的:
apply(matrix1, 1, sum)
产品用途:
apply(matrix1, 1, prod)
+ 和 %*%
都不是为了将它们的参数折叠成单个值而设计的,这与如此设计的 sum
和 prod 形成对比。
回复评论。 %*%
运算符执行 "matrix multiply" 操作。第一个参数的 i 列乘以 J 行并求和以提供新矩阵的 i-j 元素。许多具有统计或物理意义的数学运算,否则需要双 for 循环,可以通过矩阵乘法来完成。假设您的矩阵是一堆数据值,并且您想根据具有三个系数等于 c(5,6,7):
的模型对每一行进行预测
c(5,6,7) %*% matrix1
# [,1] [,2] [,3] [,4]
#[1,] 2.047344 10.02339 1.73618 0.7223964
在 R 的申请文档中,它说:
FUN:应用的功能:详见“详情”。对于 +、%*% 等函数,函数名必须用反引号引起来。
后半句没看懂
当我做
matrix1 = matrix(rnorm(3*4), 3, 4)
apply(matrix1, 1, "+")
我得到了矩阵的转置
当我这样做时
apply(matrix, 1, "%*%")
我收到一个错误。
我正在尝试获取此矩阵的逐行和与乘积。
此外,如果这不是文档所讨论的内容,+ 和 %*% 在作为 apply 的 FUN 参数提供时应该做什么?
matrix1 = matrix(rnorm(3*4), 3, 4)
apply(matrix1, 1, "+")
做类似转置的事情,因为它逐行提供 matrix1 对象,returns 将每个操作的值作为列。另一方面,如果您指定了:
apply(matrix1, 2, "+")
不会出现转置,因为始终returns应用其值作为列优先结果。
在第二种情况下,您没有为“%*%
”运算符提供第二个参数。 “+”运算符可以是一元或二元运算符,但“%*%
”运算符始终是二元运算符。 (将“%*%
”与 apply
和单个维度一起使用并没有多大意义,因为“%*%
”实际上是作为独立运算符设计的。如果你想要按行求和,然后使用:
rowSums(matrix1)
但你可以使用更慢的:
apply(matrix1, 1, sum)
产品用途:
apply(matrix1, 1, prod)
+ 和 %*%
都不是为了将它们的参数折叠成单个值而设计的,这与如此设计的 sum
和 prod 形成对比。
回复评论。 %*%
运算符执行 "matrix multiply" 操作。第一个参数的 i 列乘以 J 行并求和以提供新矩阵的 i-j 元素。许多具有统计或物理意义的数学运算,否则需要双 for 循环,可以通过矩阵乘法来完成。假设您的矩阵是一堆数据值,并且您想根据具有三个系数等于 c(5,6,7):
c(5,6,7) %*% matrix1
# [,1] [,2] [,3] [,4]
#[1,] 2.047344 10.02339 1.73618 0.7223964