【问题标题】:Create empty dataframe in R with same columns在 R 中创建具有相同列的空数据框
【发布时间】:2010-11-24 16:22:16
【问题描述】:
 names(U1)

[1] "username"     "review_count" "forum_posts"  "age"          "avg_interval"
[6] "avg_sim"      "class"

那么如何创建一个空数据框 U1.RN,它与 U1 具有相同的列?

【问题讨论】:

  • 请问您为什么需要一个 0 行数据框?根据您打算用它做什么,以不同的方式做事可能会更有效(例如,我希望您不打算在循环中逐行填充这一行?)
  • "例如,我希望您不打算在循环中逐行填充这一行?" - 是的,:(。如果 (pred.U1.nb.c[i]=='unlabeled') U1.RN[j++ ,]
  • 在 R 中,预分配您的存储空间!您知道在循环之前需要一个 6000 行的数据框,因此创建一个并逐行填充它。甚至更快;创建一个正确维度的矩阵,逐行填充该矩阵,然后转换为数据框,因为矩阵的使用速度要快得多。如果您需要更多帮助(看起来您甚至可能不需要循环,只需要一些简单的索引和子集/插入),您可以开始一个新的 Q 并提供一个适当的小例子来说明您真正想做的事情吗?如果你这样做了,我会保证看看它并给出一个答案。
  • 谢谢 Gavin,这是问题:tinyurl.com/26ugewv

标签: r


【解决方案1】:

你可以这样做:

U1.RN <- U1[0,]

【讨论】:

  • 完美..... > U1.RN names(U1.RN) [1] "username" "review_count" "forum_posts" "age" "avg_interval" [6] "avg_sim" "class" > nrow(U1) [1] 6000 > nrow(U1.RN) [1] 0
  • +1 整洁!!!!!!!!! (额外的!是为了绕过最小字符限制,哦,等等,... ;-)
【解决方案2】:

沿着df[0,] 的行,您还可以使用布尔掩码,这可能会使代码更具可读性:

 df[FALSE,]

【讨论】:

    【解决方案3】:

    使用dplyr,有几个不错的选择:

    slice(U1, 0)
    filter(U1, FALSE)
    filter(U1, NA)
    

    slice 方法可能是最清晰的。

    【讨论】:

    • filter(FALSE) 也有效,并且可能有点清楚意图。 slice(0) 可能会更好。
    • 同意slice(0) 似乎是可读性/清晰度的赢家
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多