【发布时间】:2021-03-17 10:11:24
【问题描述】:
所以我的数据看起来像这样:
test <- structure(list(value = c(0, 781, 1109, 57, 250, 541, 533, 320,
322, 1033, 291, 2213, 1845, 618, 271, 525, 88, 1354, 217, 820,
786, 119, 41, 316, 153, 378, 172, 615, 383, 168, 1448, 824, 85,
224310, 1186, 1488, 244, 368, 133, 488, 118, 4505, 1411, 649,
690, 548, 226, 393, 1042, 92, 521, 212, 1015, 380, 2944, 54376,
1396, 429, 2725, 171, 1874, 87, 547, 488, 140, 169, 237, 1749,
1144, 156, 843, 116, 313, 601, 679, 464, 1092, 178, 28, 57, 550,
498, 64, 48143, 352, 4100, 232, 1936, 189, 940, 180, 1051, 2917,
2397, 229, 802, 540, 297, 505, 1649), count = c(1L, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4L,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
)), row.names = c(NA, -100L), class = c("tbl_df", "tbl", "data.frame"
))
value 列有一些随机值,count 列主要填充有NAs。最后我需要的是count 中的每个NA 应该与最后一个不是NA 的相同。所以前几行应该是count == 1,一旦count 更改为2,它就应该是count == 2。到目前为止,我正在使用循环
for (i in 1:length(test$value))
{
if(isTRUE(is.na(test$count[i]))){
test$count[i] <- test$count[i-1]
}
}
但是,这需要很长时间!谁能想到一种更有效的方法来获得与循环相同的结果?这对我有很大帮助!提前致谢!
【问题讨论】:
标签: r performance loops