Мне нужно определить, является ли моя первая строка наблюдений строкой имен. Всегда, когда я импортирую данные, импортируются как столбцы символов из таблицы (пакет readxl).Обнаружение строки, содержащей имена
По строению данных строка без имени всегда содержит не менее 8 числовых значений.
rowNoName <- c("23-234", "Bank of Wisdom", 1:8)
rowName <- c("code of acc", "name of acc", "ac", "li", "ui", "op", "o", "p", " e", "i")
Итак, в этой логике я использую неявное принуждение для выполнения своей задачи. Из элемента символа, который первоначально является элементом числового класса, принуждение является простым. Но из элемента, который изначально является текстовой строкой, неявное принуждение терпит неудачу и бросает NA. Правило:
testName <- function(row) {
if (sum(!is.na(as.numeric(row))) >= 8) {
print("row without names")
} else {
print("row with names")
}
Эта функция решить эту проблему, но существуют еще более формальный способ сделать это? Я имею в виду, чтобы избегать предупреждения о принуждении на выходе.
> testName(row)
[1] "row with names"
Warning message:
In testName(row) : NAs introduced by coercion
Пожалуйста, покажите небольшой воспроизводимый пример и ожидаемый результат – akrun
@BenBolker ваш ответ был очень полезным! Да, числа из 8 столбцов всегда являются целыми числами. –