Цикл процесса извлечения объектов - PullRequest
0 голосов
/ 23 января 2020

Я немного новичок в цикле и хотел бы написать код, который автоматизирует извлечение строк многих объектов в R-рабочей области.

У меня есть 15 объектов R в том же каталоге, который я загружаю, используя этот l oop:

library(miceadds)
for(i in 1990:2004){
  fname = paste('C:/Users/Adrian/abc', i , 'test.RData' , sep="")
  load.Rdata(fname , paste("abc" , i , sep = ""))
}

Объекты загружены и названы "ab c" с указанием года ( С 1990 по 2004 год). Эти объекты представляют собой огромные матрицы с одинаковыми размерами, которые содержат как строки, так и числовые значения c. Я хотел бы извлечь одинаковые строки из каждого из этих 15 объектов элегантным способом.

Конечно, я всегда мог использовать что-то вроде: abc1990[grep("Birds", abc1990$column1), ] и повторять 15 раз. Будет ли более эффективный способ?

1 Ответ

2 голосов
/ 23 января 2020
# this is all the file names
fname <- paste0('C:/Users/Adrian/abc', 1990:2004 , 'test.RData')

# load all files into a list
list_of_matrices <- lapply(fname, load.Rdata)

# a function to grep the rows that you want from ONE matrix
extractMyRows <- function(MATRIX) {MATRIX[grep("Birds", abc1990$column1), ]}

# and now apply this function to all elements of the list
lapply(list_of_matrices, extractMyRows)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...