Как извлечь вектор из списка векторов через матрицу в R - PullRequest
0 голосов
/ 15 ноября 2018

Проблема:

У меня есть несколько векторов. Я хотел бы подписать числа к этим векторам, начиная с 1 до n. Затем я хотел бы преобразовать эти числа в матрицу lower.triangular. После этого я хотел бы извлечь векторы, приходящие на последний ряд матрицы.

Этапы задачи:

  1. Знаковые номера n векторы от 1 до n.

  2. Преобразовать эти числа в матрицу lower.triangular M.

  3. Затем извлеките векторы, соответствующие числам в последнем ряду матрицы M.

Пример: * * тысяча двадцать-восемь Предположим, у меня есть список 10 векторов (X): X <- list(x1=c(1:3), x2=(2:5), x3=c(4:2), x4=c(5:7), x5=c(12,34,54), x6=c(3:6), x7=c(3:6), x8=c(3,4,5), x9=c(44,56,7), x10=c(34,5,4)) Затем я бы хотел заказать их от 1 до 10, где 1 относится к первому вектору и так далее. Тогда у меня будет вектор этих чисел, скажем x = c(1:10). Затем я хотел бы преобразовать его в нижнюю треугольную матрицу M. M <- matrix(0,5,5) > M[lower.tri(M, diag=FALSE)] <- x > M [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 0 0 [2,] 1 0 0 0 0 [3,] 2 5 0 0 0 [4,] 3 6 8 0 0 [5,] 4 7 9 10 0 Теперь я бы хотел извлечь последний ряд. > tail(M, 1) [,1] [,2] [,3] [,4] [,5] [5,] 4 7 9 10 0 > newX <- as.vector(tail(M,1)) > newX [1] 4 7 9 10 0 Теперь искомые векторы (которые будут извлечены из целых векторов) равны 4, 7, 9 и 10. Другими словами, мне нужно извлечь, x4, x7, x9, and x10. Следовательно, я хотел бы извлечь векторы, соответствующие этим числам. Есть идеи или помощь, пожалуйста?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете использовать paste:

X[paste0("x", newX[newX != 0])]

$`x4`
[1] 5 6 7

$x7
[1] 3 4 5 6

$x9
[1] 44 56  7

$x10
[1] 34  5  4

paste0("x", newX[newX != 0] создаст вектор символов "x4", "x7", "x9", "x10", который вы можете использовать для индексации списка.

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