Обычно я предпочитаю кодировать R, чтобы не получать предупреждений, но я не знаю, как избежать предупреждения при использовании as.numeric
для преобразования вектора символов.
Например:
x <- as.numeric(c("1", "2", "X"))
Предупреждаю, потому что NA вводится по принуждению. Я хочу, чтобы НА вводились путем принуждения - есть ли способ сказать им: «Да, это то, что я хочу делать». Или мне просто жить с предупреждением?
Или мне следует использовать другую функцию для этой задачи?
?suppressWarnings
возможно?suppressWarnings
кажется идеальным.read.table
допускаете аргументыna.strings
?Ответы:
Использование
suppressWarnings()
:Это подавляет предупреждения.
источник
suppressWarnings()
уже упоминалось. Альтернативный вариант - сначала вручную преобразовать проблемные символы в NA. Для вашей конкретной проблемыtaRifx::destring
делает именно это. Таким образом, если вы получите другое, неожиданное предупреждение из вашей функции, оно не будет подавлено.источник
destring
отлично работает для примера op, но одно предостережение для всех, кто увидит этот поток в будущем, заключается в том, что онdestring
работает иначе, чемas.numeric
когда целевая строка представляет собой смесь строки и числа: то естьdestring("x1")
дает,1
ноas.numeric("x1")
даетNA
В общем, подавление предупреждений - не лучшее решение, так как вы можете быть предупреждены, когда будет предоставлен какой-либо неожиданный ввод.
Нижеприведенное решение представляет собой оболочку для поддержки только NA во время преобразования типа данных. Не требует никакого пакета.
источник
suppressWarnings()
правило, использование - плохая идея, потому что иногда нам нужно видеть эти предупреждения.Я немного изменил функцию jangorecki для случая, когда у нас может быть множество значений, которые нельзя преобразовать в число. В моей функции выполняется поиск по шаблону, и если шаблон не найден, возвращается FALSE.! до gperl это означает, что нам нужны те векторные элементы, которые не соответствуют шаблону. В остальном аналогично
as.num
функции. Пример:источник