【问题标题】:R: access data frame and loopR:访问数据帧和循环
【发布时间】:2019-08-08 14:19:34
【问题描述】:
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 语句重复上面的代码。 我想知道如何使用正则表达式访问每个变量的数字。 当我创建一个变量列表时,它被识别为字符串,而不是数据框名称,所以无法访问。

【问题讨论】:

  • 如果字符串中有变量名,可以使用get“获取”同名对象。

标签: r dataframe for-loop


【解决方案1】:

关键是使用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)
}

【讨论】:

  • 请解释你的答案。
猜你喜欢
  • 2017-06-12
  • 1970-01-01
  • 2013-05-05
  • 2013-07-12
  • 2019-11-12
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
相关资源
最近更新 更多