Индекс векторизации по списку фреймов данных R - PullRequest
0 голосов
/ 24 января 2019

У меня есть список из более чем 100 массивных матриц в R.

Я буду использовать небольшой пример списка объектов с именем list_matrices

list(structure(c(1, 2, 3, 4, 2, 3, 3, 4), .Dim = c(4L, 2L), .Dimnames = list(
    NULL, c("x", "y"))), structure(c(1, 2, 3, 4, 2, 2, 3, 4), .Dim = c(4L, 
2L), .Dimnames = list(NULL, c("a", "b"))))

Матрица 1 должна быть объектом x и матрица 2 должна быть объектом a

Я пытаюсь проиндексировать каждую из матриц в списке так, чтобы, если значение столбца 1 и значение столбца 2 в строке совпадали, строкаиндексируется вне матрицы, которая сохраняется как собственная матрица внутри объекта list_matrices.По сути, я хочу что-то вроде этого

mat_tf<- <-mat[(mat[,1]!=mat[,2],]

Но для каждой матрицы в списке

Я также хотел бы добавить к каждому объекту матрицы новое имя с _tf, прикрепленным к нему.так что, когда я позвоню list_matrices[[1]], я вернусь к матрице с именем x_tf

Очевидно, что циклы не являются разумной идеей, поэтому я пытаюсь найти способы векторизации процесса.У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 24 января 2019
lapply(list_matrices, function(mat) mat[mat[,1] != mat[,2],])

Затем вы можете присвоить своему списку имя с помощью функции names, как хотите.

...