R语言while循环输出结果拆分存入DataFrame的解决方法
问题根因
你写的循环存不下拆分后的值,核心是两个写法问题:
- 循环内每次执行
Date <- print(i)都会直接覆盖上一轮给Date赋的值,循环跑完Date只会留最后一次计算的结果,存不下全量序列 print()仅负责把值输出到控制台,不会帮你留存所有迭代的结果,你在控制台看到的逐行输出只是打印内容,不是变量实际存储的内容
正确调整方案
在循环启动前先初始化一个空的存储容器,每次循环把新生成的值追加到容器末尾,不要覆盖原有存储内容,循环结束后再转为DataFrame即可,调整后的代码如下:
# 初始化空向量存储所有序列值 date_list <- c() i <- 1 while (i < 365) { # 追加当前值到存储向量,不覆盖历史值 date_list <- c(date_list, i) i <- i + 7 } # 转换为DataFrame result_df <- data.frame(Date = date_list)
补充:固定步长的序列不需要写while循环生成,直接用内置
seq()函数一行就能实现,代码更简洁也不容易出存储覆盖的问题:# 生成从1开始、步长为7、最大值不超过365的序列 date_seq <- seq(from = 1, to = 365, by = 7) result_df <- data.frame(Date = date_seq)
内容的提问来源于stack exchange,提问作者noobcoder
相关产品推荐
相关产品推荐

