【发布时间】:2015-10-12 09:01:05
【问题描述】:
来自 Mathematica 我开始使用 R。在 Mathematica 中有一个函数 MapThread。来自不同列表的元素被插入到函数中。 这是一个小例子:
MapThread[#1*#2 &, {{1, 2, 3}, {4, 5, 6}}]
返回:
{4、10、18}
我想知道R中是否有相同的功能。
【问题讨论】:
标签: r function wolfram-mathematica
来自 Mathematica 我开始使用 R。在 Mathematica 中有一个函数 MapThread。来自不同列表的元素被插入到函数中。 这是一个小例子:
MapThread[#1*#2 &, {{1, 2, 3}, {4, 5, 6}}]
返回:
{4、10、18}
我想知道R中是否有相同的功能。
【问题讨论】:
标签: r function wolfram-mathematica
您可以为此使用mapply:
mapply('*', c(1,2,3), c(4,5,6))
[1] 4 10 18
第一个参数是按元素应用于以下参数的函数(在本例中为乘法*)。然后第二个参数是第一个向量,第三个参数是第二个向量(函数将应用于其元素)。
如果您在控制台上输入?mapply,您可以查看更多示例并阅读相关内容。
【讨论】:
1:3 * 4:6 :-)
如果出于某种奇怪的原因你可以做显而易见的事情,例如,c(1,2,3) * c(4,5,6)、do.call 会比 mapply 更有效:do.call("*", list(c(1,2,3), c(4,5,6)))
我认为这相当于您的 Mathematica 代码所做的。
【讨论】:
mapply 是一个循环。试试mapply(function(x, y) {print(x); x * y}, c(1,2,3), c(4,5,6))。