【发布时间】:2018-06-13 15:57:14
【问题描述】:
玩具示例:
> myfn = function(a,x){sum(a*x)}
> myfn(a=2, x=c(1,2,3))
[1] 12
到目前为止还不错。现在:
> df = data.frame(a=c(4,5))
> df$ans = myfn(a=df$a, x=c(1,2,3))
Warning message:
In a * x : longer object length is not a multiple of shorter object length
> df
a ans
1 4 26
2 5 26
我想要发生的是,对于第一行,就好像我打电话给myfn(a=4, x=c(1,2,3),给出了24 的答案,而对于第二行,就好像我打电话给myfn(a=5, x=c(1,2,3) 给出了一个答案30 的答案。我该怎么做?谢谢你。
编辑:稍微复杂一点的版本。现在假设函数是
myfn = function(a,b, x){sum((a+b)*x)}
我有数据框
df = data.frame(a=c(4,5), b=c(6,7), c=c(9,9))
我想创建df$ans,这样第一行就好像我调用了myfn(a=4, b=6, x=c(1,2,3),第二行就好像我调用了myfn(a=5, b=7, x=c(1,2,3),也就是说,使用df$x 表示@ 987654332@,df$y 为b,忽略df$z。
【问题讨论】:
标签: r