提问人:Jack 提问时间:4/26/2023 最后编辑:L TyroneJack 更新时间:4/27/2023 访问量:33
如何在 R 中存储 for 循环的每个输出?
How to store each output of a for loop in R?
问:
我需要将每个输出(从 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)
}
但是不知道如何保存每个出来的数字,因为计数每次都会被覆盖。
答:
1赞
YH Jang
4/26/2023
#1
假设您想将 存储为向量。count
在此代码中,在 for 循环之前创建了一个空向量。result_vector
您可以将 附加到 ,而不是 。print(count)
count
result_vector
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)
}
0赞
Retired Data Munger
4/27/2023
#2
您可能需要考虑“咕噜咕噜”映射函数:
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
})
评论