#r
#r
Вопрос:
subset(iris, Sepal.Width > 4 amp; Sepal.Length > 5, select = c(Sepal.Width,Sepal.Length,Species))
Я проверял функцию подмножества, но подумал, что то же самое можно сделать проще, так зачем запоминать новую функцию.
Итак, я написал приведенный ниже код для репликации вышеупомянутой функции подмножества
1)
iris["Sepal.Width" > 4 amp; "Sepal.Length" > 5,c("Sepal.Width", "Sepal.Length","Species")]
Но условие amp; здесь не работает, и когда я проверил приведенный ниже код, и он сработал
2)
iris[iris$Sepal.Width > 4 amp; iris$Sepal.Length > 5,c("Sepal.Width", "Sepal.Length","Species")]
Пожалуйста, объясните
- Поскольку код 1) и 2) отличается, я ожидал, что оба 1) и 2) дадут одинаковый результат.
- Поскольку у нас есть код 2) почему мы должны использовать функцию подмножества? Любой
сценарий, в котором функция подмножества лучше?
Спасибо
Комментарии:
1. Этот вопрос касается программирования на языке R и помечен для перехода на переполнение стека.
Ответ №1:
Это потому, что вы сравниваете строку Sepal.Width
с числом 4
, а не со значениями одноименного столбца. Так что они всегда будут TRUE
:
> "Sepal.Width" > 4
[1] TRUE
> "Sepal.Length" > 5
[1] TRUE
Итак, вы для iris[TRUE, c("Sepal.Width", "Sepal.Length","Species")]
which возвращает все строки для выбранных столбцов. Я лично предпочитаю использовать subset
.
Комментарии:
1. Спасибо! Можете ли вы объяснить, почему подмножество лучше?
2. В основном для удобства чтения, но также и для согласованности, поскольку
subset
может работать с несколькими различными форматами данных (data.frame, matrix, list и т. Д.).