在数据处理中,如何高效地填充缺失值(NA)是一个常见的问题。今天我们将探讨如何在R语言中使用循环填充的方式来处理这种情况,特别是当目标向量中只有一个非缺失值时,如何保持这个值不变并填充其他位置。
问题描述
假设我们有一个目标向量x,其中包含若干NA值和一个非NA值:
x <- c(rep(NA, 5), "b", rep(NA, 2))我们还有一组值vals,用于填充这些NA:
vals <- letters[1:3] # 即 "a", "b", "c"我们的目标是创建一个新向量z,其中NA被vals的循环填充替换,同时保持原有的非NA值不变:
z <- c("c", "a", "b", "c", "a", "b", "c", "a")解决方案
下面是一个简洁而有效的方法来实现这个功能:
rotate <- function(x, n) { x[(n + seq_along(x) - 1) %% length(x) + 1] } fillvals <- function(x,