Mathematica中的MapThread函数
来自Mathematica,我开始使用R。Mathematica中有一个函数MapThread。从到不同列表的元素被插入到函数中。 下面是一个小例子:Mathematica中的MapThread函数,r,function,wolfram-mathematica,R,Function,Wolfram Mathematica,来自Mathematica,我开始使用R。Mathematica中有一个函数MapThread。从到不同列表的元素被插入到函数中。 下面是一个小例子: MapThread[#1*#2&,{1,2,3},{4,5,6}] 返回: {4,10,18} 我想知道R中是否有相同的函数。您可以使用mapply来实现: mapply('*', c(1,2,3), c(4,5,6)) [1] 4 10 18 第一个参数是要在以下参数上按元素应用的函数(在本例中为乘法*)。第二个参数是第一个向量,第三个参数
MapThread[#1*#2&,{1,2,3},{4,5,6}]
返回:
{4,10,18}
我想知道R中是否有相同的函数。您可以使用
mapply
来实现:
mapply('*', c(1,2,3), c(4,5,6))
[1] 4 10 18
第一个参数是要在以下参数上按元素应用的函数(在本例中为乘法*
)。第二个参数是第一个向量,第三个参数是第二个向量(函数将应用于其元素)
如果在控制台上键入
?mappy
,您可以看到更多示例并阅读相关内容。您可以使用mappy
:
mapply('*', c(1,2,3), c(4,5,6))
[1] 4 10 18
第一个参数是要在以下参数上按元素应用的函数(在本例中为乘法*
)。第二个参数是第一个向量,第三个参数是第二个向量(函数将应用于其元素)
如果您在控制台上键入
?mappy
,您可以看到更多的示例并阅读相关内容。如果出于某种奇怪的原因,您可以执行明显的操作,例如,c(1,2,3)*c(4,5,6)
,do.call
将比mappy
更有效:do.call(“*”,list(c(1,2,3),c(4,5,6))
我认为这相当于你的Mathematica代码所做的。如果出于某种奇怪的原因你可以做显而易见的事情,例如,
c(1,2,3)*c(4,5,6)
,do.call
将比mapply
更有效:do.call(“*”,list(c(1,2,3),c(4,5,6))
我认为这相当于你的Mathematica代码所做的。顺便说一句,困难的方法是
1:3*4:6
:-)@akrun谢谢akrun,对于这个例子肯定是一个更好的方法:)@Roland这是一个很好的方法。你不想添加它作为答案吗?顺便说一句,困难的方法是1:3*4:6
:-)@akrun谢谢akrun,对于这个例子肯定是更好的方法:)@Roland这是一个很好的方法。是否要将其添加为答案?mapply
是一个循环。尝试mapply(函数(x,y){print(x);x*y},c(1,2,3),c(4,5,6))
。是的,我现在它是一个循环,我只是认为它会非常快,因为它是基于c的。很酷,我今天发现了一些新的东西。即使调用是由C代码完成的,每次迭代仍有一个对R函数的调用。mapply
是一个循环。尝试mapply(函数(x,y){print(x);x*y},c(1,2,3),c(4,5,6))
。是的,我现在它是一个循环,我只是认为它会非常快,因为它是基于c的。很酷,我今天发现了一些新的东西。即使调用是由C代码完成的,每次迭代仍然有一个对R函数的调用。