Элегантная индексация до конца вектора / матрицы

Можно ли в R сказать - я хочу, чтобы все индексы с позиции i до конца вектор / матрица? Допустим, мне нужна подматрица, начиная с 3-го столбца. В настоящее время я знаю только этот способ:

A = matrix(rep(1:8, each = 5), nrow = 5) # just generate some example matrix...

A[,3:ncol(A)] # get submatrix from 3rd column onwards

Но действительно ли мне нужно писать ncol (A) ? есть ли элегантный способ сказать «начиная с 3-го столбца»? Что-то вроде A [, 3:] ? (или A [, 3: ...] )?

66
задан TMS 16 June 2018 в 15:44
поделиться

2 ответа

Иногда проще сказать R, чего ты не хочешь. Другими словами, исключите столбцы из матрицы, используя отрицательную индексацию:

Вот два альтернативных способа, которые дают одинаковые результаты:

A[, -(1:2)]
A[, -seq_len(2)]

Результаты:

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    3    4    5    6    7    8
[2,]    3    4    5    6    7    8
[3,]    3    4    5    6    7    8
[4,]    3    4    5    6    7    8
[5,]    3    4    5    6    7    8
<час >

Но чтобы ответить на ваш вопрос в том виде, в котором он был задан: используйте ncol, чтобы найти количество столбцов. (Точно так же есть nrow, чтобы найти количество строк.)

A[, 3:ncol(A)]

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    3    4    5    6    7    8
[2,]    3    4    5    6    7    8
[3,]    3    4    5    6    7    8
[4,]    3    4    5    6    7    8
[5,]    3    4    5    6    7    8
89
ответ дан 24 November 2019 в 15:03
поделиться

Вы можете использовать следующую инструкцию:

A[, 3:length(A[, 1])]
1
ответ дан 24 November 2019 в 15:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: