Почему целое число (0) выводится, когда я использую функцию which ()? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь определить, какие переменные в моем столбце V1 имеют значения в столбце V5, которые находятся в диапазоне 95-105, а также имеют значения в столбце V6, которые находятся в диапазоне 7-13.Я использую функцию which и пытаюсь сохранить имена переменных в V1 под переменной x, но я продолжаю получать целое число (0) или символ (0), и я не уверен, что это значит.Изображение моего кода прилагается ниже.

enter image description here

1 Ответ

0 голосов
/ 20 февраля 2019

integer(0) означает, что в вашем фрейме данных есть нет элементов, которые удовлетворяют условиям.(Вы можете попробовать

with(df, any(95 <= V5 & V5 <= 105 & 
             13 <= V6 & V6 <= 17))

(отредактировано на основе комментария @ H1, чтобы соответствовать вашему описанию, а не вашему коду); немного переставить, чтобы приблизиться к синтаксису A < B < C, который парсер R не может обработать...)

Вы, вероятно, должны проверить str(df) и / или summary(df) (или sapply(df, class)), чтобы убедиться, что ваш фрейм данных действительно был прочитан, как предполагалось (или используйте dplyr::read_csv(), которыйвыводит информацию о классах, выведенных из набора данных. В частности, любые опечатки в ваших данных, которые делают запись , а не действительным числом (дополнительный десятичный знак, пропущенное значение, такое как «?», не распознается как пропущенное)и т. д.) заставит R интерпретировать весь столбец как символ (поскольку вы установили stringsAsFactors=FALSE), а не числовую переменную.

Если вы хотите, чтобы столбцы 2-14 были числовыми, вы можетеиспользуйте df[-1] <- lapply(df[-1], as.numeric) однако, было бы лучше найти и исправить любые проблемы вверх по течению ...

...