【问题标题】:Create empty data frame with 200 rows and no columns创建包含 200 行且无列的空数据框
【发布时间】:2019-01-25 19:11:46
【问题描述】:

我可以这样做:

df <- data.frame(a=1:200)
df$a <- NULL
df

结果:

data frame with 0 columns and 200 rows

只用一个命令也能达到同样的效果吗?

【问题讨论】:

  • 我猜想到的第一个问题是“为什么?”。 Spidey-sense 说你将使用for 循环来尝试填充它,如果你发布你想要实现的目标,可能会有更好的方法。
  • 同时检查herehere
  • @hrbrmstr,不,那只是好奇。我知道你在想什么,是的,我确实将 lapply 与 Reduce 结合使用以获得相同的效果。

标签: r dataframe


【解决方案1】:

这可以工作(如果对 2 个函数的调用不被视为 2 个命令):

data.frame(matrix(, nrow=200, ncol=0))
#data frame with 0 columns and 200 rows

编辑:另一个选项是data.frame()[1:200, ]

data.frame()[1:200, ]
# data frame with 0 columns and 200 rows

【讨论】:

  • R 在matrix 中说“缺少参数”
  • @SashkoLykhenko R 的哪个版本? (它在 R 3.3.0 中按预期工作)
  • data.frame(matrix(nrow=200, ncol=0)) 这个也可以
  • @Cath data.frame()[1:10, ] 创建了一个空数据框,但是在使用循环填充其中的值时,我们得到了奇怪的行名。 df = data.frame()[1:10, ] for (i in 1:10){ x = i+2 y = i+20 df$x = x df$y = y } df
  • @DrNishaArora 在创建空的 data.frame 时,row.names 设置为 NA,后跟索引以避免重复的 row.names。 (这就是说,我怀疑你的循环会给你你正在寻找的输出)
【解决方案2】:

这个怎么样?

data.frame(row.names = 1:200)

【讨论】:

    【解决方案3】:

    这是我通过dput发现的:

    structure(
       list(), 
       .Names = character(0), 
       row.names = c(NA, -200L), 
       class = "data.frame"
     )
    

    【讨论】:

    • row.names 技巧可能只适用于最近的 R 和新的 ALTREP 工作
    猜你喜欢
    • 2015-08-11
    • 2018-08-31
    • 1970-01-01
    • 2015-05-18
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多