如何在R中存储for循环的每个输出?

shyt4zoc  于 2023-04-27  发布在  其他
关注(0)|答案(2)|浏览(163)

我需要将从1到1000的每个输出存储为一行。
到目前为止,我有:

`    n<-1000
    for(n in 1:n) {
      count<-0
      check<- ifelse(n>1, TRUE, FALSE)
      while(check) {
        if (n%%2==1) {n=3*n+1
        } else {n=n/2}
        count=count+1
        check<- ifelse(n>1, TRUE, FALSE)}
      print(count)
    }`

但不知道如何保存每个出来的数字,因为计数每次都被覆盖。

yhived7q

yhived7q1#

假设你想把count存储为一个向量。
在这段代码中,在for循环之前创建了一个空向量result_vector
可以将count附加到result_vector,而不是print(count)

n<-1000
result_vector <- c()
for(n in 1:n) {
  count<-0
  check<- ifelse(n>1, TRUE, FALSE)
  while(check) {
    if (n%%2==1) {n=3*n+1
    } else {n=n/2}
    count=count+1
    check<- ifelse(n>1, TRUE, FALSE)}
  result_vector <- c(result_vector, count)
}
uwopmtnx

uwopmtnx2#

你可能需要考虑'purrr'Map函数:

library(tidyverse)
n <- 1000

# use the 'map' functions in 'purrr' to create a vector instead
# of extending the vector in the loop
result_vector <- map_dbl(1:n, ~ {
  n <- .x  # save parameter in 'n' to keep code the same
  count <- 0
  check <- if (n > 1)
    TRUE
  else
    FALSE
  while (check) {
    if (n %% 2 == 1) {
      n = 3 * n + 1
    } else {
      n = n / 2
    }
    count = count + 1
    check <- if (n > 1)
      TRUE
    else
      FALSE
  }
  count
})

相关问题