我有一个包含多个列的数据框。最后一列有NA,例如前50行。有粗暴的方法,但我怎么写一些可以告诉第一个整数/浮点值开始的地方?
structure(list(col1 = c(646, 574, 590, 671, 618, 529), col2 = c(438,
744, 730, 748, 507, 479), col3 = c(493, 661, 651, 715, 582, 571
), col4 = c(1047, 1252, 1335, 1269, 1185, 1147), col5 = c(883,
1008, 996, 1019, 901, 846), col6 = c(824, 840, 766, 776, 868,
927), col7 = c(727, 685, 708, 779, 717, 721), col8 = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), .Names = c("col1",
"col2", "col3", "col4", "col5", "col6", "col7", "col8"), row.names = c(NA,
6L), class = "data.frame")
对于我迭代的前7列,隔离列并将其放入时间序列模型
for(colin 1:ncol(so)){
isoColumn<- so[,col]
model<-tbats(isoColumn)
}
我是否可以使用编程方法/算法来判断第一个值的位置,以便在将其插入tbats模型之前截断这些行?
答案 0 :(得分:1)
您可以使用which(!is.na(x))[1]
找到第一个非NA
值,但为什么不这样做呢
models <- lapply(so,function(x) tbats(na.omit(x)))
答案 1 :(得分:1)
如果处理大数据,Position
比which
要快得多,因为它只会在找到匹配之前进行求值,而不是评估整个向量然后进行子集化
Position(function(x)!is.na(x), x)