Как передать фрейм данных в качестве аргумента функции? - PullRequest
1 голос
/ 07 августа 2020

T12 - это фрейм данных с 22 столбцами (но мне просто нужны столбцы со 2 по 8) и около миллиона записей. Некоторые записи указаны в первой колонке. Каждый раз, когда в первом столбце стоит NA, при полных наблюдениях удаляется вся строка. Все работает хорошо.

У меня намного больше фреймов данных, и я не хочу снова писать весь код для каждого фрейма данных.

Я хотел бы иметь что-то вроде этой функции и хотите поставить как x T12, T13, T14, T15 и т. д.

Не могли бы вы мне помочь?

split <- function (x){
  x <- x[,2:8]
  x <- x[complete.cases(x[ ,1]),]
  }

1 Ответ

2 голосов
/ 07 августа 2020
  • Если у вас есть фреймы данных с именами "T12", "T13" et c, вы можете использовать шаблон "T" с последующим числом для захвата всех таких фреймов данных в векторе символов, используя ls.

  • Используя mget, вы можете получить кадры данных из этого вектора символов в именованном списке.

  • Затем вы можете использовать lapply чтобы применить функцию split к каждому списку.

new_data <- lapply(mget(ls(pattern = 'T\\d+')), split)

new_data имеет список фреймов данных. Если вы хотите, чтобы эти изменения отражались в исходном фрейме данных, используйте list2env.

list2env(new_data, .GlobalEnv)

PS - split - это функция по умолчанию в R, поэтому лучше дать вашей функции другое имя.

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