Не могу сказать слева () справа () в R - PullRequest
1 голос
/ 28 июня 2019

Являются ли R * gdata::left() и gdata::right() на самом деле одинаковыми функциями, но с разными именами и работают точно так же, как и должны, или я их неправильно использую?

У меня есть: mtcars

Я хочу: только последние 2 столбца из mtcars

(я знаю, что могу попросить об этом с mtcars[,(length(mtcars)-1):(length(mtcars))], нос чего бы мне, если есть более простой путь?)

То, что я хочу, выглядит следующим образом:

                    gear carb
Mazda RX4              4    4
Mazda RX4 Wag          4    4
Datsun 710             4    1
Hornet 4 Drive         3    1
Hornet Sportabout      3    2
...

Кажется, что right(mtcars,2) достиг бы этого, но вместо этого он дает

                     mpg cyl
Mazda RX4           21.0   6
Mazda RX4 Wag       21.0   6
Datsun 710          22.8   4
Hornet 4 Drive      21.4   6
Hornet Sportabout   18.7   8
...

Что в точности совпадает с left(mtcars,2):

                     mpg cyl
Mazda RX4           21.0   6
Mazda RX4 Wag       21.0   6
Datsun 710          22.8   4
Hornet 4 Drive      21.4   6
Hornet Sportabout   18.7   8
...

Мой главный вопрос: Какой самый простой способ получить самые правые n столбцов из фрейма данных? Я хочу что-то, надеюсь, базу R, которая не требует знания общего количества столбцов mtcars.

Ответы [ 2 ]

4 голосов
/ 28 июня 2019

Кажется, в gdata странная / глупая ошибка.Если вы посмотрите на источник для влево / вправо , вы увидите, что обе функции получают UseMethod("left").Насколько я понимаю, это означает, что вызовы с data.frame приведут к вызову left.data.frame.Действительно, если я наберу

right <- function(x, n=6L) UseMethod("right")

, то right(mtcars,2) будет работать как положено.

4 голосов
/ 28 июня 2019

Мы можем использовать tail в именах столбцов от base R, чтобы получить последние n столбцы

mtcars[tail(names(mtcars), 2)]

или head для получения первых n столбцов

mtcars(head(names(mtcars), 2)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...