#r
Вопрос:
Когда я набираю этот код: with(my.data, order(age))
я получаю следующий вывод: 2 3 5 1 4
но когда я набираю этот код: my.data[order(my.data$age),]
я получаю следующий вывод:
name age hgt wgt race year SAT
2 Fred 18 67 156 Af.Am Fr 1210
3 Barb 18 64 128 <NA> Fr 840
5 Jeff 20 72 202 Asian So 880
1 Bob 21 70 180 Cauc Jr 1080
4 Sue 24 66 1118 Cauc Sr NA
Я хочу показать приведенный выше вывод с помощью функции «с», но она дает мне только первую строку, а не всю матрицу.
Ответ №1:
with
используется для удобства, т. е. чтобы избежать набора my.data$
текста или my.data[[
многократного ввода
with(my.data, order(age))
эквивалентно
order(my.data$age)
with
в основном полезно, когда мы делаем что-то вроде
with(my.data, order(name, age, hgt))
Эквивалент будет my.data$
повторен три раза
order(my.data$name, my.data$age, my.data$hgt)
Все вышеперечисленное возвращает order
индекс на основе, который мы используем в качестве индекса строки в [
( ?Extract
)
Если мы хотим вернуть данные, почему бы не использовать arrange
library(dplyr)
my.data %>%
arrange(age)
Ответ №2:
Если вы хотите получить этот вывод, вам нужно использовать []
его в инструкции.
with(my.data, my.data[order(age), ])
Выходные данные (только примеры данных с несколькими столбцами)
name age hgt
2 Fred 18 67
3 Barb 18 64
5 Jeff 20 72
1 Bob 21 70
4 Sue 24 66
Примерные Данные
my.data <-
structure(list(
name = c("Bob", "Fred", "Barb", "Sue", "Jeff"),
age = c(21, 18, 18, 24, 20),
hgt = c(70, 67, 64, 66, 72)
),
class = "data.frame",
row.names = c(NA,
-5L))