根据公式计算

bra*_* Mc 3 loops r dataframe

我需要根据以下公式进行一些计算:

B1 = A1 + (1-A1) * B1
Run Code Online (Sandbox Code Playgroud)

例:

B1 = 0.2 + (1 - 0.2) * 0.4
   = 0.52

C1 = 0.4 + (1 - 0.4) * 0.8
   = 0.904

D1 = 0.8 + (1 - 0.8) * 0.5
   = 0.952
Run Code Online (Sandbox Code Playgroud)

适用于其他行和其他列的逻辑相同,共有11个.

数据帧:

DF

A        B      C        D
0.2     0.4     0.8     0.5
0.4     0.5     0.6     0.2
0.8     0.1     0.5     0.4
0.3     0.4     0.1     0.8
Run Code Online (Sandbox Code Playgroud)

预期产量:

A       B       C       D
0.2     0.52    0.904   0.952
0.4     0.7     0.88    0.904
0.8     0.82    0.91    0.946
0.3     0.58    0.622   0.9244
Run Code Online (Sandbox Code Playgroud)

我用以下代码尝试了1:

Df <- df[-ncol(df)] + ( 1 – df[-ncol(df)]) * df[-1]
Run Code Online (Sandbox Code Playgroud)

我能够根据输出得到列B,但不能用于列的其余部分.请帮忙,谢谢.BM.

chi*_*n12 5

您可以按如下方式递归执行此操作:

do.call(cbind, Reduce(f = function(A1, B1) A1+(1-A1)*B1, 
                      x = df, 
                      accumulate = TRUE))
Run Code Online (Sandbox Code Playgroud)

说明:由于df是一个data.frame,它是一个向量列表,Reduce将采用每个向量并应用您的函数.然后do.call(cbind,...)将结果合并到data.frame中.

  • 不值得一个单独的答案,但你可能喜欢`tidyverse`语法更多`require(tidyverse)df%>%accumulate(〜.x +(1 - .x)*.y)%>%simplify2array` (5认同)