R: доступ к фрейму данных и петле - PullRequest
1 голос
/ 18 марта 2019
no1_date_count <- data.frame(table(cate_no1$date_id))
no1_date_count$Var1 <- ymd(no1_date_count$Var1)# date format

no2_date_count <- data.frame(table(cate_no2$date_id))
no2_date_count$Var1 <- ymd(no2_date_count$Var1)# date format

....

no26_date_count <- data.frame(table(cate_no26$date_id))
no26_date_count$Var1 <- ymd(no26_date_count$Var1)# date format

Я хочу повторить приведенный выше код, используя оператор for.Интересно, как я могу получить доступ к номерам каждой переменной с помощью регулярных выражений.Когда я создаю список переменных, он распознается как строка, а не как имя фрейма данных, поэтому к нему нельзя получить доступ.

1 Ответ

0 голосов
/ 18 марта 2019

Ключ создает список, используя ls и шаблон. Затем с помощью get вы можете получить доступ к каждому фрейму данных в списке. После этого вы можете создать свой цикл.

Это полный код:

library(lubridate)

# dummy data
cate_no1<-data.frame('date_id'=c(20180301,20180401,20180501, 20180501), 'var2'=1:4)
cate_no2<-data.frame('date_id'=c(20180601,20180701,20180801, 20180701), 'var2'=2:5)
cate_no26<-data.frame('date_id'=c(20180901,20181001,20181101, 20181001), 'var2'=3:6)

# list of variables in the environment using pattern cate_n
mylist1<-ls(pattern='cate_n')

# for loop
for (i in 1:length(mylist1))
{
  prefix<-gsub("cate_", "", mylist1[i], fixed = TRUE) # set prefix for output dataframe
  df<-get(mylist1[i]) # get input dataframe from the list
  df<-data.frame(table(df$date_id)) # get table of frequencies
  df$Var1<-ymd(as.character(df$Var1)) # transform to date
  assign(paste0(prefix, '_date_count'), df) # create output dataframes
  rm(df)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...