【问题标题】:R-creating multiple data frames with namesR-创建多个具有名称的数据框
【发布时间】:2015-03-30 18:33:35
【问题描述】:

我想创建 100 个带有名称的空数据框

  • df1, df2, ...,df100.

每个数据框将有 2 列,其中

  • 第 i 个数据框 dfi 的列名为“yi”和“xi”。例如, df5 的列名将是 y5 和 x5。
  • 第一列为字符,第二列为数字。

如何使用 R 创建这样的数据框。我会很高兴得到任何帮助。非常感谢。

【问题讨论】:

  • 这些是字符列还是数字列?
  • akrun,我编辑了问题。

标签: r


【解决方案1】:

我们可以使用replicate 在列表中创建空的“data.frames”,并使用Map 更改列名

n <- 100
lst <- replicate(n,data.frame(y=character(), x=numeric(),
                     stringsAsFactors=FALSE), simplify=FALSE)

names(lst) <- paste0('df', 1:n)
nmy <- paste0('y', 1:n)
nmx <- paste0('x', 1:n)
lst1 <- Map(function(x,y,z) {names(x) <- c(y,z); x}, lst, nmy, nmx)

或者

lst1 <- Map(setNames, lst, as.data.frame(rbind(nmy,nmx)))


str(lst1, list.len=3)
#List of 100
# $ df1  :'data.frame': 0 obs. of  2 variables:
#  ..$ y1: chr(0) 
#  ..$ x1: num(0) 
# $ df2  :'data.frame': 0 obs. of  2 variables:
#  ..$ y2: chr(0) 
#  ..$ x2: num(0) 
# $ df3  :'data.frame': 0 obs. of  2 variables:
#  ..$ y3: chr(0) 
#  ..$ x3: num(0) 
# [list output truncated]

【讨论】:

  • +做得很好@akrun,很高兴看到地图的使用。如果您在全局环境中需要这些数据框,请执行此操作 list2env(lst1, envir = .GlobaEnv)
  • @infominer 感谢您提醒list2env。我最初是这么想的。
  • 不,不要使用list2env。全球环境中的 100 个空数据集你到底会怎么做??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2012-07-30
  • 1970-01-01
相关资源
最近更新 更多