当前位置: 首页 > 知识库问答 >
问题:

如何使用R中的函数创建空数据帧?[副本]

施选
2023-03-14
dput(xv)
c("Users", "Transactions", "Workload")
new_df <- data.frame(
    Users = character(), 
    Transactions = character(), 
    Workload = character()
)

因为xv中的值可能会改变,xv中的条目数也可能改变,所以我需要能够使用函数来做到这一点?

你知道我怎么做吗?

共有1个答案

袁雅逸
2023-03-14

我想这就是你想要的:

do.call(data.frame,setNames(lapply(xv,function(e) vector(typeof(e))),xv));
## [1] Users        Transactions Workload
## <0 rows> (or 0-length row.names)

编辑:感谢@哲远让我对我的解决方案多思考一点。由于输入(由OP指定)是原子向量,它不能包含异构数据类型,因此根据每个输入元素的类型生成单独的零长度向量的lapply()调用没有任何好处。如果xv是一个列表,可以包含异构的数据类型,那么它将提供一个好处,但是由于xv也用于设置结果data.frame的名称,如果它包含非字符元素,就非常有问题了。所以我的解决方案实际上并不像我想象的那样明智。

下面是一个使用do.call(data.frame,...)模式的更合理的解决方案,该模式用rep()替换lapply()调用:

do.call(data.frame,setNames(rep(list(character()),length(xv)),xv));
## [1] Users        Transactions Workload
## <0 rows> (or 0-length row.names)
 类似资料:
  • 我得到了一个具有多个列和行的数据帧df1。简单的例子: 我想创建一个空的数据框df2,然后再添加新的列和计算结果。 此时,我的代码如下所示: …添加两个新列: 有没有更好/更安全/更快的方法?是否可以创建一个空数据帧df2,并且只从df1复制索引?

  • 问题内容: 是否有可能创建python函数的真实副本?最明显的选择是http://docs.python.org/2/library/copy.html,但我在这里看到: 它通过不变地返回原始对象来“复制”函数和类(浅层和深层)。 我需要一个真实的副本,因为我可能会更改函数的某些属性。 更新: 我知道评论中提到的所有可能性。我的用例基于元编程,其中我根据一些声明性规范构造了类。完整的细节对于SO来

  • 我试图在R中合并2个数据帧,但我有两个不同的列,带有不同类型的ID变量。有时一行会有其中一列的值,而另一列却没有。我想同时考虑它们,这样,如果一个帧缺少一个列的值,那么将使用另一个列。 我想合并这两个数据帧,得到2行: null 编辑:理想情况下,输出如下所示: 第1行匹配,因为列“first”在两个数据帧中具有相同的值,并且它填充了来自DF2的“second”的值 第2行匹配,因为列“secon

  • 本文向大家介绍如何使用grepl函数对R数据帧的行进行子集化?,包括了如何使用grepl函数对R数据帧的行进行子集化?的使用技巧和注意事项,需要的朋友参考一下 R中的grepl函数在R数据帧的字符向量或列的每个元素内搜索与参数模式的匹配项。如果我们想使用grepl对R数据帧的行进行子集化,则可以通过访问包含字符值的列来使用带有单方括号和grepl的子集。 例1 请看以下数据帧: 输出结果 通过在x

  • 我需要创建一个具有特定形状的空数据框,例如[10,10],以存储来自其他源的数据。 在熊猫中很简单: 但在红宝石使用达鲁,我不知道如何做到这一点。 相关问题:熊猫数据帧

  • 本文向大家介绍如何在R数据帧中将空值转换为NA?,包括了如何在R数据帧中将空值转换为NA?的使用技巧和注意事项,需要的朋友参考一下 当我们的数据包含空值时,很难执行分析,我们可能会将这些空值转换为NA,以便我们了解不可用的值的数量。这可以通过使用单个方括号来完成。 示例 请看以下具有一些空值的数据框- 将空值转换为NA-