R 对于整个数据集上的循环

R 对于整个数据集上的循环,r,dataframe,loops,tidyverse,repeat,R,Dataframe,Loops,Tidyverse,Repeat,我试图在R中的数据帧上执行for循环中的tidyverse操作。我希望每个数据帧都经过循环并返回“干净”的数据帧。我知道我错过了一些简单的事情。这是我的密码: AY14<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C",&

我试图在R中的数据帧上执行for循环中的
tidyverse
操作。我希望每个数据帧都经过循环并返回“干净”的数据帧。我知道我错过了一些简单的事情。这是我的密码:

AY14<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))

AY15<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))

AY16<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))

Dat_list <- list(AY14,AY15,AY16)

for(i in Dat_list){
  Dat_list[i]<- i %>%
    distinct(txt_student_id, txt_college_name,.keep_all = T) %>% 
    filter(txt_registration_status_code %in% list("First-time, Freshman","First-time, Transfer")) %>% 
    select(txt_student_ssn,txt_college_name,txt_registration_status_code)
}

AY14试试这个。最好使用数字索引在循环中移动。对于列表,使用
[[]]
索引也是一种实用的方法。代码如下:

library(dplyr)
#Data
AY14<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))
AY15<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))
AY16<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))
#List
Dat_list <- list(AY14,AY15,AY16)
#Loop
for(i in 1:length(Dat_list)){
  Dat_list[[i]]<- Dat_list[[i]] %>%
    distinct(txt_student_id, txt_college_name,.keep_all = T) %>% 
    filter(txt_registration_status_code %in% list("First-time, Freshman","First-time, Transfer")) %>% 
    select(txt_college_name,txt_registration_status_code)
}
库(dplyr)
#资料

AY14试试这个。最好使用数字索引在循环中移动。对于列表,使用
[[]]
索引也是一种实用的方法。代码如下:

library(dplyr)
#Data
AY14<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))
AY15<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))
AY16<- data.frame(X1=seq(1,30,by=1), txt_student_id=sample(seq(300,329,by=1),size=30,replace=T), txt_college_name= sample(c("A","B","C","D"),size=30,replace=T,prob=c(.5,.3,.15,.05)), txt_registration_status_code=sample(c("First-time, Freshman","First-time, Transfer","Continuing"),size=30,replace=T, prob=c(.4,.1,.5)))
#List
Dat_list <- list(AY14,AY15,AY16)
#Loop
for(i in 1:length(Dat_list)){
  Dat_list[[i]]<- Dat_list[[i]] %>%
    distinct(txt_student_id, txt_college_name,.keep_all = T) %>% 
    filter(txt_registration_status_code %in% list("First-time, Freshman","First-time, Transfer")) %>% 
    select(txt_college_name,txt_registration_status_code)
}
库(dplyr)
#资料

AY14这是一个使用
lappy
的版本

Dat_list <- lapply(Dat_list, function(x) {
    x %>%
      distinct(txt_student_id, txt_college_name,.keep_all = T) %>% 
      filter(txt_registration_status_code %in% list("First-time, Freshman","First-time, Transfer")) %>% 
      select(txt_college_name,txt_registration_status_code)
    }
)
Dat\u列表%
不同(txt\U学生id、txt\U学院名称、.keep\u all=T)%>%
过滤器(txt_注册_状态_代码%in%列表(“第一次,新生”,“第一次,转学”))%>%
选择(txt\大学名称、txt\注册\状态\代码)
}
)

这是一个使用
lappy
的版本

Dat_list <- lapply(Dat_list, function(x) {
    x %>%
      distinct(txt_student_id, txt_college_name,.keep_all = T) %>% 
      filter(txt_registration_status_code %in% list("First-time, Freshman","First-time, Transfer")) %>% 
      select(txt_college_name,txt_registration_status_code)
    }
)
Dat\u列表%
不同(txt\U学生id、txt\U学院名称、.keep\u all=T)%>%
过滤器(txt_注册_状态_代码%in%列表(“第一次,新生”,“第一次,转学”))%>%
选择(txt\大学名称、txt\注册\状态\代码)
}
)

谢谢@Duck,列表中的每个数据帧返回0行?@asokol我使用您共享的数据进行了测试,所有数据帧都有行。请先检查您共享的数据,然后小心处理新数据,因为某些变量可能不存在!为了保护数据,我稍微更改了一些变量名,但忘记了将它们更改回来。谢谢@Duck,它为列表中的每个数据帧返回0行?@asokol我使用您共享的数据进行了测试,所有数据帧都有行。请先检查您共享的数据,然后小心处理新数据,因为某些变量可能不存在!为了保护数据,我稍微更改了一些变量名,但忘了重新更改它们。