R tibbles中的关键列记录在哪里?

时间:2019-03-09 17:09:27

标签: r tibble

我是R的新手。我发现了数据帧rownames()colnames(),喜欢用它们索引数组,因为我发现它们使我的代码更具可读性,如mtcars["Mazda RX4","mpg"] < / p>

现在,我了解到data.framerownames()列已弃用了tibbleskey。我找不到R tibbles中的关键列的任何文档。我敢肯定它在那里,但是google(tibbles中的关键列)和google(R tibbles中的关键列)都不对我有用。

我不想做任何幻想。我只是想成为一个好运动,遵守规则,不要在我的第一个代码中使用过时的概念。因此,出现了一个问题:“ R tibble中的关键列记录在哪里?”

1 个答案:

答案 0 :(得分:3)

data.frame并没有贬值,它仍然是R中许多工作的主力。随着“大数据”和大型数据集的出现,data.table变得非常有用。它们的主要优点是它们具有基础的排序索引,该索引可以按键值进行搜索并将数据集结合在一起(合并),从而更加高效,快捷。 tibble是从data.frame继承的辅助函数(肯定是data.frame不会被描述,因为tibble实际上是数据帧的特殊形式)。

为了说明这一点:

df <- data.frame(a=runif(5),b=runif(5))
tbl <- tibble(a=runif(5),b=runif(5))

对“类”的调用产生:

> class(df)
[1] "data.frame"

> class(tbl)
[1] "tbl_df"     "tbl"        "data.frame"

这表明小记号本身就是data.frame,因此任何与类相关的函数都将小记号作为data.frames使用(通常但并非总是如此,对@Spacedman评论中的重要说明)。小标题的原因在本文中进行了解释:https://cran.r-project.org/web/packages/tibble/vignettes/tibble.html实质上是使它们以更友好的方式在屏幕上打印(与嵌入式/最终代码无关),并使某些行为更一致。但也可能会争辩说,这是否有益于人们寻求和偏爱哪种行为。

在文档中:“小标题是对数据帧的一种现代表示。小标题保留了经受时间考验的功能,并删除了曾经方便但现在令人沮丧的功能(即将字符向量转换为因数) ”。总之,它们是提供一些方便快捷方式的data.frames。 (就个人而言,我没有看到在我的代码中使用它们的动力,因为这么多的base-R函数和无数的库都将返回data.frames,因此肯定需要使用data.frames。这意味着对小标题的偏爱意味着有意地将其他来源中创建的数据帧转换为小标题,并且必须在心理空间中同时进行管理。对我来说,实现某些假定的快捷方式会耗费大量精力。

对于问题的另一方面,您可以使用attribute()来查看对象中可以访问哪些变量:

attributes(tbl)
$names
[1] "a" "b"

$row.names
[1] 1 2 3 4 5

$class
[1] "tbl_df"     "tbl"        "data.frame"