Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中使用na.locf而不使用其他包_R_Performance_Missing Data_Na - Fatal编程技术网

如何在R中使用na.locf而不使用其他包

如何在R中使用na.locf而不使用其他包,r,performance,missing-data,na,R,Performance,Missing Data,Na,给定一个向量,如(假设)c(2,NA,5,NA,NA,1,NA),问题是“上一次观测结转”导致向量c(2,2,5,5,5,1,1) 正如所回答的,zoo软件包中的na.locf可以做到这一点。然而,考虑到问题的简单性,以及在一个“空白”R环境中执行多次的事实,我希望在不加载包的情况下执行此操作。有没有一种方法可以简单而快速地使用基本的R?(向量可能很长,并且可能包含许多连续的NAs。)这是使用rle的一种方法: x <- c(2,NA,5,NA,NA,1,NA) x[is.na(x)]

给定一个向量,如(假设)
c(2,NA,5,NA,NA,1,NA)
,问题是“上一次观测结转”导致向量
c(2,2,5,5,5,1,1)


正如所回答的,
zoo
软件包中的
na.locf
可以做到这一点。然而,考虑到问题的简单性,以及在一个“空白”R环境中执行多次的事实,我希望在不加载包的情况下执行此操作。有没有一种方法可以简单而快速地使用基本的R?(向量可能很长,并且可能包含许多连续的NAs。)

这是使用
rle
的一种方法:

x <- c(2,NA,5,NA,NA,1,NA) 
x[is.na(x)] <- Inf
x[is.infinite(x)] <- with(rle(x), 
    rep(values[which(is.infinite(values)) - 1], lengths[is.infinite(values)])
)
# [1] 2 2 5 5 5 1 1

x这是使用
rle
的一种方法:

x <- c(2,NA,5,NA,NA,1,NA) 
x[is.na(x)] <- Inf
x[is.infinite(x)] <- with(rle(x), 
    rep(values[which(is.infinite(values)) - 1], lengths[is.infinite(values)])
)
# [1] 2 2 5 5 5 1 1

x摘自
zoo::na.locf.default

fillInTheBlanks <- function(S) {
  L <- !is.na(S)
  c(S[L][1], S[L])[cumsum(L)+1]
}

填充空格从
zoo::na.locf.default提取

fillInTheBlanks <- function(S) {
  L <- !is.na(S)
  c(S[L][1], S[L])[cumsum(L)+1]
}

填空检查@Arun如果是同一个问题,那么该页面上接受的答案在这里应该是有效的答案,而不是。@AnandaMahto如果存在对问题a有效但对问题B无效的(任何)答案,那么问题a就是合理的!=问题B。“如何在不接触气球的情况下移动气球”并不是“如何移动气球”的翻版,即使他们有一些共同的答案。(我不删除这个问题的另一个原因是,除非你有幸尝试“传播”这个词,否则很难找到答案,而我不是,我怀疑其他人也不会)。但没有理由重新开放。我没有看到有人投票删除这个问题,因此,你的问题仍然会成为另一个问题的路标(或者结束某人的搜索,不管是什么情况)。@AnandaMahto,好的,谢谢。但如何“重开”?通过回复评论?(如何判断一个问题是否已结束?)检查这个@Arun如果是同一个问题,那么该页面上被接受的答案应该是一个有效的答案,而事实并非如此。@AnandaMahto如果存在对问题a有效但对问题B无效的(任何)答案,那么问题a就是合理的!=问题B。“如何在不接触气球的情况下移动气球”并不是“如何移动气球”的翻版,即使他们有一些共同的答案。(我不删除这个问题的另一个原因是,除非你有幸尝试“传播”这个词,否则很难找到答案,而我不是,我怀疑其他人也不会)。但没有理由重新开放。我没有看到有人投票删除这个问题,因此,你的问题仍然会成为另一个问题的路标(或者结束某人的搜索,不管是什么情况)。@AnandaMahto,好的,谢谢。但如何“重开”?通过回复评论?(人们如何判断一个问题是否已结束?)如果
x
已经包含了无限操作,这是显而易见的。如果
x
已经包含了无限操作,这是显而易见的,这将失败。