如何确定列表中第一个整数/浮点值的起始位置

时间:2016-08-06 02:58:33

标签: r algorithm missing-data

我有一个包含多个列的数据框。最后一列有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模型之前截断这些行?

2 个答案:

答案 0 :(得分:1)

您可以使用which(!is.na(x))[1]找到第一个非NA值,但为什么不这样做呢

models <- lapply(so,function(x) tbats(na.omit(x)))

答案 1 :(得分:1)

如果处理大数据,Positionwhich要快得多,因为它只会在找到匹配之前进行求值,而不是评估整个向量然后进行子集化

Position(function(x)!is.na(x), x)