【问题标题】:Appending or storing a for loop in r in a list在列表中的 r 中附加或存储 for 循环
【发布时间】:2015-04-05 19:35:49
【问题描述】:

我基本上是在计算我希望绘制的概率。我的目标是将这些放在一个列表或向量中,但我在这样做时遇到了麻烦。我写了这个 for 循环,我可以打印出所有的值,但我似乎无法将它们存储在列表中。

probs <- list()
for (i in seq(0,1,length=100)) {
  append(probs,1 - mean(rbinom(100000,6,i)==4))
}

我可以打印我的结果(见下文),但不能存储它们。

for (i in seq(0,1,length=100)) {
  print(1 - mean(rbinom(100000,6,i)==4))
}

当我看到概率列表中的内容时,我得到一个空的list。为什么会这样?

【问题讨论】:

    标签: r for-loop


    【解决方案1】:

    append 不会改变列表,它只是返回一个新的list,它会丢失,因为它没有保存在任何地方。

    试试这个:

    probs <- list()
    for (i in seq(0,1,length=100)) {
      probs <- append(probs,1 - mean(rbinom(100000,6,i)==4))
    }
    

    或改用vector

    probs <- vector()
    for (i in seq(0,1,length=100)) {
      probs <- append(probs,1 - mean(rbinom(100000,6,i)==4))
    }
    probs # obviously it varies per execution
      [1] 1.00000 1.00000 1.00000 0.99999 0.99994 0.99988 0.99981 0.99971 0.99946
     [10] 0.99921 0.99864 0.99824 0.99758 0.99674 0.99573 0.99466 0.99271 0.99031
     [19] 0.98862 0.98669 0.98389 0.98074 0.97781 0.97457 0.97028 0.96523 0.96225
     [28] 0.95483 0.94936 0.94447 0.93965 0.93278 0.92486 0.91704 0.90908 0.90305
     [37] 0.89365 0.88608 0.87596 0.86834 0.85762 0.84787 0.83998 0.82830 0.81918
     [46] 0.80843 0.80078 0.78881 0.77933 0.77061 0.76032 0.75416 0.74201 0.73520
     [55] 0.72575 0.71545 0.70855 0.70364 0.69809 0.69209 0.68604 0.68294 0.67610
     [64] 0.67491 0.67463 0.67226 0.67048 0.66950 0.67413 0.67556 0.67900 0.68065
     [73] 0.68591 0.69526 0.70135 0.70930 0.71619 0.72765 0.73874 0.75130 0.76355
     [82] 0.77658 0.79165 0.80553 0.82090 0.83728 0.84947 0.86944 0.88331 0.90126
     [91] 0.91595 0.92875 0.94334 0.95669 0.96918 0.97930 0.98813 0.99400 0.99856
    [100] 1.00000
    

    【讨论】:

      猜你喜欢
      • 2022-11-20
      • 2020-03-26
      • 2019-08-22
      • 2020-07-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2021-10-30
      相关资源
      最近更新 更多