Я нашел ответ здесь http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash
Кажется, что причина vim smartindent является причиной проблемы. На приведенной выше странице описываются рабочие раунды, но после прочтения справки в smartindent в самом vim (: help smartindent) я решил попробовать cindent вместо smartindent.
Я заменил
set smartindent
с
set cindent
в моем файле .vimrc
, и до сих пор он работает отлично.
Это изменило и зафиксировало поведение ' & Lt; & Lt;» и '>>' для отступов визуальных блоков, которые включают комментарии к python.
Есть больше вариантов конфигурации и информации об углублении в помощи vim для smartindent и cindent (: help smartindent и: help cindent).
Попробуйте:
# define "demo" dataset
ZZZ <- data.frame(n=c(1,2,NA),m=c(6,NA,NA),o=c(7,8,8))
# apply the counting function per columns
apply(ZZZ, 2, function(x) length(which(!is.na(x))))
Выполнив:
> apply(ZZZ, 2, function(x) length(which(!is.na(x))))
n m o
2 1 3
Если вы действительно настаиваете на возвращении вектора, вы можете использовать as.vector
, например, определив эту функцию:
nonNAs <- function(x) {
as.vector(apply(x, 2, function(x) length(which(!is.na(x)))))
}
Вы можете просто запустить nonNAs(ZZZ)
:
> nonNAs(ZZZ)
[1] 2 1 3
Для получения общего количества отсутствующих значений используйте сумму (is.na (x)), а для столбцов используйте colSums (is.na (x)), где x - переменная, содержащая набор данных
Если вам нужна только общая сумма NA, то sum () с помощью! Is.na () сделает это:
ZZZ <- data.frame(n = c(1, 2, NA), m = c(6, NA, NA), o = c(7, 8, 8))
sum(!is.na(ZZZ))