r - 对多个向量应用 for 循环

标签 r dataframe for-loop vector apply

我正在尝试迭代一个 for 循环,其中调用了 3 个不同的向量。更具体地说,我试图了解不同站点需要多长时间才能达到其承载能力。本质上,我想确定不同人群达到各自的承载能力需要多长时间。

截至目前,我已将其设置为在不同时间步成功打印丰度。

tspan <- 80
N <- matrix(0,tspan,1)
N[1] <- 20
K <- 13626
r <- 0.32

for (t in 2:tspan){
    N[t] <- N[t-1]*exp(r*(1-N[t-1]/K))
    print(N)
  }

尽管这会导致同一向量的输出打印出 N=tspan 次。这里的最终目标是在不同 K 值的向量上迭代上述 for 循环:

K<-c(208, 543, 557, 831, 831, 878, 933, 970, 1022, 1039)

然后将所有这些存储在数据框中。我试过使用嵌套的 for 循环,但我不确定如何实现它,因为所有必要的值都是 1 等式中的引用。任何帮助将不胜感激。

最佳答案

你可以使用sapply

K <- c(208, 543, 557, 831, 831, 878, 933, 970, 1022, 1039)
out <- sapply(K, function(x) {
  for (t in 2:tspan){
    N[t] <- N[t-1]*exp(r*(1-N[t-1]/x))
  } #                              ^ note the x instead of K here 
  N
})

结果

head(as.data.frame(out))
#        V1       V2       V3       V4       V5       V6       V7       V8       V9      V10
#1 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000 20.00000
#2 26.70800 27.21983 27.22790 27.33125 27.33125 27.34252 27.35427 27.36143 27.37062 27.37342
#3 35.29968 36.88868 36.91432 37.24457 37.24457 37.28077 37.31856 37.34160 37.37119 37.38022
#4 46.04258 49.70798 49.76899 50.56016 50.56016 50.64751 50.73882 50.79455 50.86620 50.88810
#5 59.07051 66.47804 66.60632 68.28529 68.28529 68.47241 68.66838 68.78819 68.94243 68.98963
#6 74.28092 88.03152 88.28178 91.59706 91.59706 91.97116 92.36397 92.60462 92.91501 93.01011

关于r - 对多个向量应用 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563711/

相关文章:

python - 将函数逐行(轴 = 0)应用于 Pandas 数据框以创建四个新列

python - 使用 Pandas 对同一工作簿的多个工作表进行 pd.read_excel()

r - 数据类型 double 未转换为因子

javascript - 带有参数列表的 For 循环

r - R中如何使用for循环保存和写入文件

Perl 编程 : continue block

r - 计算显示表格所需的时间

r - 有条件地填充数据框的行

r - 什么影响使用并行包创建集群的时间?

r - 如何在 R 中的多个模拟图形上应用一个函数