Как использовать lapply с grep для удаления столбцов в списке

За свою жизнь я не могу понять, как lapply через мой список, чтобы grep имена столбцов.

Вот код, который работает на одном кадре данных:

tl1 <- trend1[,grep("Date|AIR|LSL",colnames(trend1))]

Но у меня есть trend1 через trend12, Как мне превратить это в список и применить это grep каждому элементу списка получить tl1 через tl12 фреймы данных?

В качестве альтернативы я хотел бы использовать цикл for.

1 ответ

Если у вас уже есть trend1 через trend12 DataFrame в вашей среде R, вы можете поместить их все в один список и использовать lapply чтобы удалить ненужные столбцы:

# mget gets the dataframes whose names are returned by ls
list_of_dfs <- mget(ls(pattern="trend\\d{1,2}"))

# loop through the dataframes and make the changes
new_dfs <- lapply(list_of_dfs, function(df) df[,grep("Date|AIR|LSL",colnames(df))])

Надеюсь, это поможет.

Другие вопросы по тегам