相关疑难解决方法(0)

递归累积函数

我需要在R中写一个累积求和函数,但我一直在打砖墙.该函数具有以下结构:

a*x1
a*x2 + a^2*x1
a*x3 + a^2*x2 + a^3*x1
a*x4 + a^2*x3 + a^3*x2 + a^4*x1
Run Code Online (Sandbox Code Playgroud)

等等.cumsum似乎不适用于此类功能.有什么办法可以在R中实现吗?

r

5
推荐指数
1
解决办法
1595
查看次数

stats::filter 函数 R 的工作原理

在此之前我严重不知所措,R中的stats过滤器命令是做什么的,“卷积”方法是如何实现的。我理解过滤器为 1 时的情况,但对于过滤器的任何其他值,事情都会变得混乱。从 stackoverflow 中的另一个问题(过滤器函数的简单示例,特别是递归选项)我理解了“卷积”如何适用于过滤器=1,例如:

f1<-1,f2<-1,f3<-1
x<-c(1:5)
filter(x,c(f1,f2))
3  5  7  9 NA
#which translates to
x[1]*f1+x[2]*f2
x[2]*f1+x[3]*f2
x[3]*f1+x[4]*f2
x[4]*f1+x[5]*f2
x[5]*f1+x[6]*f2 #x[6] is NA
#filter other than 1
#filter<-c(1,2)
filter(x,c(1,2))
4  7 10 13 NA
#and not the below ones
x[1]*f1+x[2]*f2=5
x[2]*f1+x[3]*f2=8
x[3]*f1+x[4]*f2=11
Run Code Online (Sandbox Code Playgroud)

等等,这里究竟发生了什么?这可能是微不足道的,因为缺乏对卷积方法的理解,但我无法弄清楚

signal-processing r

5
推荐指数
1
解决办法
4444
查看次数

滚动百分比沿列添加

我认为这在基础R中应该很容易,但我无法弄明白.我有一个简单的数据框,让我们说它看起来像这样

tbl <-  read.table(text = 
    "Field1 Field2
    100 200
    150 180
    200 160
    280 250
    300 300
    300 250",
header = TRUE)
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的是创建一个将应用滚动%添加的函数,例如:

fn <- function(tbl, pct) {}
Run Code Online (Sandbox Code Playgroud)

它接受上面的数据帧为tbl.它将当前行的百分比部分添加到基于NEXT的行pct,并且几乎以累积方式滚动它.

例如,fn(tbl$Field1, 0.1)会生成以下结果:

100   (100 + 0.1*0)
160   (150 + 0.1*100 = 160)
216   (200 + 0.1*160 = 216)
301.6 (280 + 0.1*216 = 301.6)
Run Code Online (Sandbox Code Playgroud)

等等

我会使用一个包解决方案,但更喜欢基础R,因为它有助于学习过程!我的长期目标是通过field和pct的每个组合构建一个循环,这样我就可以在回归模型中测试它的效果; 因此,我的直觉是,我后来可以应用的功能是前进的方向.

谢谢.

r apply rolling-computation

3
推荐指数
1
解决办法
80
查看次数

标签 统计

r ×3

apply ×1

rolling-computation ×1

signal-processing ×1