You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for循环按年份筛选数据集并检测重复项

问题原因

原代码用年份数值(2018/2019/2020)作为列表的位置索引,R列表的位置索引从1开始计数,这会强制创建一个包含2020个元素的列表,前2017个位置都是空值,仅在第2018、2019、2020位存储了有效结果,因此出现大量空值的异常输出。

修正方案

我们需要将年份作为列表的命名元素而非位置索引,或者用循环的位置序号填充列表后再命名元素,以下是两种可行写法:

方法1:直接用年份字符串作为列表元素名

library(dplyr)

mylist <- list()
for(i in 2018:2020){
  temp <- mydata %>% filter(annee == i)
  # 将年份转为字符串作为列表元素的名称
  mylist[[as.character(i)]] <- table(duplicated(temp))
}

方法2:先初始化列表再填充并命名

library(dplyr)

years <- 2018:2020
# 初始化对应长度的空列表
mylist <- vector("list", length(years))
# 给列表元素命名为年份
names(mylist) <- years

for(j in seq_along(years)){
  i <- years[j]
  temp <- mydata %>% filter(annee == i)
  mylist[[j]] <- table(duplicated(temp))
}
验证结果

运行修正后的代码,会得到符合预期的输出:

$`2018`
FALSE  TRUE 
    9     1 

$`2019`
FALSE 
   10 

$`2020`
FALSE  TRUE 
    9     1 

内容的提问来源于stack exchange,提问作者Seydou GORO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:32:22