【发布时间】:2014-09-19 21:25:56
【问题描述】:
假设我有以下data.frame:
>tmp
user start.date X03.16.2013 X03.17.2013 X03.18.2013 X03.19.2013
Allison 2013-03-15 5 5 0 2
Andrew 2013-03-15 2 0 0 0
Carl 2013-03-16 10 8 11 10
Dora 2013-03-16 5 4 0 0
Hilary 2013-03-17 NA 3 5 0
Louis 2013-03-18 NA NA 8 3
Mary 2013-03-19 NA NA NA 7
Mickey 2013-03-20 NA NA NA NA
我想为两天或以上零条目的用户指定一个“死亡日”。我的方法是在列上运行一个循环并说“如果tmp[x,j:j+1] 的总和等于零,那么lastdateid 是tmp[x,j] 行x”:
for (j in 3:dim(tmp)[2]){
lastdateid <- apply(tmp, 1, function(x) {
i <- which(sum(tmp[x,j:j+1])==0); ifelse(length(i), head(i,1), NA)
})
}
上面的循环无限运行,也只是创建了充满NAs 的向量lastdateid。理想情况下,循环将返回 Andrew 的 lastdateid 是 tmp[2,4] 和 Dora 的 tmp[4,5] 并且其他所有人的值为 NA。是什么导致这个循环无限运行?我怎样才能修复这个语句,它给出了预期的结果?请多多包涵,因为我对 R 比较陌生。谢谢!
【问题讨论】:
标签: r conditional-statements apply