r - 如何在 R 中重复一个 for 循环 n 次?
问题描述
我试图在 R 中重复一个 for 循环固定次数。这是我要重复的代码示例
for (i in 1:nrow(data)) {
if (i>130){
data$deltas[i]=-((-data$p[i]))*data$alphas[i]
}
else {
data$deltas[i]=
((-(((data$p[i+1])-(data$p[i])))*data$alphas[i]) + data$deltas[i+1])
}
}
我没有任何需要满足的条件,只需要在同一个数据集上运行相同的代码 n 次。
解决方案
如果我们想重复循环“n”次,请使用循环for
创建一个function
for
f1 <- function(data, ival) {
for(i in head(seq_len(nrow(data)), -1)) {
if(i > ival) {
data$deltas[i] <- -((-data$p[i])) * data$alphas[i]
} else {
data$deltas[i] <- ((-(((data$p[i+1]) - (data$p[i]))) *
data$alphas[i]) + data$deltas[i+1])
}
}
return(data)
}
并在每次迭代中分配数据
n <- 10
for(i in seq_len(n)) data <- f1(data, ival = 130)
使用一个小的可重现示例
set.seed(24)
df1 <- data.frame(deltas = rnorm(10), p = runif(10), alphas = rnorm(10))
-输入
df1
# deltas p alphas
#1 -0.545880758 0.09393471 -0.46906069
#2 0.536585304 0.55225375 -0.33498679
#3 0.419623149 0.72516981 1.53625216
#4 -0.583627199 0.13792462 0.60999453
#5 0.847460017 0.22296603 0.51633570
#6 0.266021979 0.68767062 -0.07430856
#7 0.444585270 0.07648914 -0.60515695
#8 -0.466495124 0.59973018 -1.70964518
#9 -0.848370044 0.63014766 -0.26869311
#10 0.002311942 0.04663503 -0.64859151
n <- 10
for(i in seq_len(n)) df1 <- f1(df1, ival = 5)
-输出
df1
# deltas p alphas
#1 0.832142549 0.09393471 -0.46906069
#2 0.617163102 0.55225375 -0.33498679
#3 0.559238507 0.72516981 1.53625216
#4 -0.342918176 0.13792462 0.60999453
#5 -0.291043381 0.22296603 0.51633570
#6 -0.051099814 0.68767062 -0.07430856
#7 -0.046287932 0.07648914 -0.60515695
#8 -1.025325821 0.59973018 -1.70964518
#9 -0.169316331 0.63014766 -0.26869311
#10 0.002311942 0.04663503 -0.64859151
推荐阅读
- typescript - Promise.race 的返回类型应该是什么?(打字稿)
- kotlin - 如何为自定义对象的 ArrayList 添加 parcelable 实现?
- r - 编码数学表达式
- r - 在 R httr、jsonlite、dplyr 中抓取推文
- reactjs - 反应为什么'clearTimeout'不适用于useeffect返回回调
- python - 在pocketsphinx连续更改语言和字典,LiveSpeech到法语,我得到了new_Decoder返回-1异常
- java - java中意外关闭的扫描仪,现在收到IllegalStateException
- sql - SQL Server 中错误的执行计划与 PAGELATCH 等待之间的相关性
- javascript - 如何将数据表集成到左栏 Web 部件中?
- python - 无法运行 Py_Initialize(),应用程序以代码 -1073741191 退出