Можно ли в 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: ...]
)?
Иногда проще сказать 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
Вы можете использовать следующую инструкцию:
A[, 3:length(A[, 1])]