R 编写一个函数,用序列参数和求和计算变量
我需要写一个函数来计算一系列输入和求和的变量。我之所以编写这个函数,是因为稍后,我将把它应用于数据帧 新变量R 编写一个函数,用序列参数和求和计算变量,r,function,R,Function,我需要写一个函数来计算一系列输入和求和的变量。我之所以编写这个函数,是因为稍后,我将把它应用于数据帧 新变量R通过以下等式计算: 在这个等式中,N_b,X_ext,和sum.sqr.X项是常量N_l是一个从1到5的向量,m取决于N_l,如下数据框所示: > Multi.Presence N_l m 1 1 1.20 2 2 1.00 3 3 0.85 4 4 0.65 5 5 0.65 共有5个术语(e_1,e_2,e_3,e_4,e_5)。根
R
通过以下等式计算:
在这个等式中,N_b
,X_ext
,和sum.sqr.X
项是常量N_l
是一个从1到5的向量,m
取决于N_l
,如下数据框所示:
> Multi.Presence
N_l m
1 1 1.20
2 2 1.00
3 3 0.85
4 4 0.65
5 5 0.65
共有5个术语(e_1
,e_2
,e_3
,e_4
,e_5
)。根据N_l
是什么,e的求和项(sum.e
)将添加许多e
项。例如,如果e_1=14
,e_2=18
,e_3=7
,e_4=-6
,e_5=-11
。然后,当为N_l=1
计算R时,则sum.e
项等于e_1=14
。然后,当为N_l=2
计算R时,sum.e
项等于e_1+e_2=14+18
,依此类推
我想编写一个函数,计算所有N_L
(从1到5)值的R,选择R
的最大值,并返回导致最大R
值的N_L
值
> head (DATA)
N_b N_l X_ext x.sqr_sum e_1 e_2 e_3 e_4 e_5
1 5 3 18 810 14.6 2.6 -9.4 0 0
2 5 3 18 810 14.6 2.6 -9.4 0 0
3 5 4 24 1440 21.8 9.8 -2.2 -14.2 0
4 5 4 24 1440 21.8 9.8 -2.2 -14.2 0
5 5 5 30 2250 29 17 5 -7 -19
6 5 5 30 2250 29 17 5 -7 -19
该函数可以用R编写为
func <- function(N_l, e, N_b, X_ext, sum.sqr.x)
{
(c(1.2, 1, 0.85, 0.65, 0.65)[N_l] * N_l)/N_b + sum(e[1:N_l]) * X_ext/sum.sqr.x
}
现在,如果我们从您的示例中获取向量e
,我们可以插入值1:5以查看N_l
如何更改输出:
e <- c(14, 18, 7, -6, -11)
vecfunc(1:5, e)
#> [1] 15.20 34.00 41.55 35.60 25.25
非常感谢你,艾伦!这正是我需要去的地方。我只是想知道你能不能帮我申请一下。
N_b
、X_ext
和sum.sqr.X
实际上是数据帧中包含N_l
和e
术语的列。我已经更新了我原来的帖子,加入了数据框架。我想实现这个函数来为数据帧的每一行计算R
,对于数据帧列中从1到N_l
值范围内的向量化N_l
的所有项。正如您可以看到的,e_
项超过N_l
列中的数字,在代码中已被视为零,因此求和项始终可以是所有e_
项相加在一起。最重要的是使用正确的m
因子计算R
的所有N_l
值,该因子包含在乘以向量中。我需要知道向量中的哪个N_l
项是函数中选择的R
的最大值的原因。@MaralDorri我想我明白了。请看我的更新。
e <- c(14, 18, 7, -6, -11)
vecfunc(1:5, e)
#> [1] 15.20 34.00 41.55 35.60 25.25