为这个相当长的名字道歉,但我想要具体。我对R和编码很新,所以请放轻松我。
我的功能如下:
myfun = function(x, y, g) {return(1 / (1 + exp(y*g%*%x)))}
其中x是具有n行和d列的任何数据帧,y是标量和整数,g是长度为d的向量(即与x相同)。我想在不使用循环的情况下为x的每一行运行此函数。
我在申请系列中尝试过类似下面代码的各种功能:
apply(x = a, 1, myfun(y = 1, g = b)
其中a是3x3数据帧,b是3个元素长的向量。上面的代码给出了一个错误,我错过了myfun的一个参数,但我显然对于尝试的内容毫无头绪。
提前感谢您的帮助!
编辑:我的实际数据框架庞大,稀疏,并且不是很直接(我认为),所以我将包含一个示例数据框和其他变量:
a = data.frame(c1 = seq(1,3,1), c2 = seq(4,6,1), c3 = seq(7,9,1))
b = c(1,2,3)
c = 1
另外,我想我可能还没有明确说明一条重要信息。我想实际对b的所有行和值进行myfun的求和,所以我实际上想要以下内容:
answer = myfun(a[1,], c, b[1]) + myfun(a[2,], c, b[2]) + myfun(a[3,], c, b[3])
换句话说,a [1]应该用b [1]应用于myfun,因为它们被组合在一起。我也对上面的函数进行了编辑,因为我忘了包含return()。希望这会使事情变得更加清晰。为混乱道歉!