A for
l oop не является функцией - он ничего не возвращает, поэтому x <- for(...
не имеет смысла. Вы можете сделать это, например, sapply
, как это
casenums <- sapply(idef_id, function(x) sum(!is.na(x)))
Или вы можете сделать это в for l oop, но вам нужно присвоить определенное значение внутри l oop:
casenums = rep(NA, ncol(idef_id))
names(casenums) = names(idef_id)
for(i in names(idef_id)) {
casenums[i] = sum(!is.na(idef_id[[i]]))`
}
У вас также была проблема, что i
принимает имена столбцов, поэтому sum(is.na(i))
спрашивает, отсутствует ли значение имени столбца. Вам нужно использовать idef_id[[i]]
для доступа к фактическому столбцу, а не только к имени столбца, как я показал выше.
Кажется, вы хотите, чтобы ответом было количество значений, отличных от NA, поэтому я переключился на sum(!is.na(...))
, чтобы подсчитать это напрямую, а не жестко кодировать количество строк кадра данных и выполнять вычитание.