在列表中的 r 中追加或存储 for 循环



我本质上是在计算我希望绘制的概率。 我的目标是将它们放在列表或向量中,但我在这样做时遇到了麻烦。 我写了这个 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. 为什么会这样呢?

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

最新更新