【问题标题】:Creating data.frames with names from vector使用来自矢量的名称创建 data.frames
【发布时间】:2015-01-05 11:54:07
【问题描述】:

假设我有一个字符值向量。是否可以创建多个空的 data.frames,其名称取自向量(例如,在循环该向量时)并稍后在代码中通过它们的名称引用这些 data.frames,从字符向量中获取这些名称?

names <- c ("data.a","data.z","data.g")

我想遍历名称向量并创建空的 data.frames data.a data.z data.g 等,并且以后也可以通过遍历名称来为它们分配值。

【问题讨论】:

  • 创建一个 list 的 data.frames ...
  • 感谢您的提示 - 是否可以将列表保存到硬盘驱动器并稍后像通常的数据框一样加载?
  • 当然。您可以使用saveRDS 函数来保存整个列表或遍历列表以使用write.csv 保存每个data.frame,如果您需要其他软件中的那些。
  • 您似乎想稍后通过循环填充 data.frames。除非您提前初始化数据帧,否则这在 R 中会很慢。
  • 感谢您的信息。实际上这是一个玩具示例 - 我将从 API 中提取数据并将其存储在数据帧/数据帧列表中。

标签: r


【解决方案1】:

一种方法是使用sapply 创建列表:

nms <- c ("data.a", "data.z", "data.g")
lst <- sapply(nms, function(x) x=data.frame() )
str(lst)
List of 3
 $ data.a:'data.frame': 0 obs. of  0 variables
 $ data.z:'data.frame': 0 obs. of  0 variables
 $ data.g:'data.frame': 0 obs. of  0 variables

并通过以下方式引用它们:

> lst[[1]]
data frame with 0 columns and 0 rows
> lst$data.a
data frame with 0 columns and 0 rows

【讨论】:

    【解决方案2】:

    你可以试试

     nms <- c("data.a","data.z","data.g")
     lst <- setNames(replicate(3, data.frame()), nms)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      • 2022-06-10
      相关资源
      最近更新 更多