我写了一个应该计算每列有多少个NA的函数。在将所有内容打包成一个函数之前,它已经起作用。现在没有。
我敢打赌,这只是一个愚蠢的初学者错误,不过,我可以在这方面使用您的帮助。
我的想法是,该声明
x[nrow(x),i] <- aux_count
没有正确分配我的东西。我为什么想知道。
以下代码显示了我的函数,该函数演示了该问题。
check_Quandl_tibble <- function(x){
for(i in 2:ncol(x)){
aux_count <- 0
for(j in 1:(nrow(x)-1)){
if(is.na(x[j,i])){
aux_count <- aux_count + 1
}
}
x[nrow(x),i] <- aux_count
}
}
a <- matrix(c(1,4, NA, 81), nrow = 5, ncol = 5)
a <- rbind(a, rep(NA, ncol(a)))
a <- as_tibble(a)
# a now looks like this
# A tibble: 6 x 5
V1 V2 V3 V4 V5
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 4 NA 81 1
2 4 NA 81 1 4
3 NA 81 1 4 NA
4 81 1 4 NA 81
5 1 4 NA 81 1
6 NA NA NA NA NA
a <- check_Quandl_tibble(a)
# a now looks like this
# A tibble: 6 x 5
V1 V2 V3 V4 V5
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 4 NA 81 1
2 4 NA 81 1 4
3 NA 81 1 4 NA
4 81 1 4 NA 81
5 1 4 NA 81 1
6 NA NA NA NA NA
# instead I wanted
# A tibble: 6 x 5
V1 V2 V3 V4 V5
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 4 NA 81 1
2 4 NA 81 1 4
3 NA 81 1 4 NA
4 81 1 4 NA 81
5 1 4 NA 81 1
6 1 1 2 1 1 # this row is supposed to count the NA's per column.
答案 0 :(得分:2)
我们可以将逻辑colSums
(matrix
)中的is.na(a)
和rbind
放入matrix
rbind(a, colSums(is.na(a)))
在这里,假设“ a”来自代码的第一行
a <- matrix(c(1,4, NA, 81), nrow = 5, ncol = 5)
如果我们要在创建tibble
后替换最后一行
a %>%
mutate_all(list(~ replace(., n(), sum(is.na(.[-n()])))))