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