【发布时间】:2015-10-07 18:52:08
【问题描述】:
我在编写一个函数来替换 R 中的 for() 循环时遇到问题。
我的数据如下所示:
dat1<-rep(sprintf("%02d", 0:52),10)
dat1<-as.data.frame(dat1[40:length(dat1)])
colnames(dat1)<-c("wk")
wk.seas<-c(rep("win",9),rep("spr",13),rep("sum",13),rep("aut",13),rep("win",6))
wks<-sprintf("%02d", 0:53)
这个循环产生我想要的:
for(j in seq_along(dat1[,1])){
dat1$season[dat1[,1]==wks[j]]<-wk.seas[j]
}#works
我希望在 df 中创建一个向量,其值对应于一年中的一周。
这是我尝试使用函数/lapply 组合复制此循环:
lapply(seq_along(dat1$wk), function(d){
dat1$season[dat1$wk==wks[d]]<-wk.seas[d]
}) #not working
谢谢 (编辑添加缺少的代码)
【问题讨论】:
-
但是你的循环没有产生你想要的返回值,错误:找不到对象'wk.seas'。
-
@user 对不起,我没有复制我需要的所有东西——它现在应该可以工作了
-
你有关于每个季节构成的代码吗?例如,“赢”覆盖了哪些数字等,如果是这样,您可以采用这种方法。
-
@CDVAK 为什么要使用 lapply?
标签: r