如何在R中查看as.data.frame的头?

时间:2015-05-11 15:27:52

标签: r dataframe

我有一个包含20列和20,000行的庞大数据集,根据我使用的程序手册,我们必须将数据作为数据框,尽管我不明白它的作用。我似乎无法查看我创建的头数据框。

我在Bold写了一篇我不明白的部分,我对R很新,能不能向我解释以下是如何工作的?

首先我读了CSV文件

vData = read.csv("my_matrix.csv");

1)这里我们根据手册创建数据框, -c(1:8)做什么?

dataExpr0 = as.data.frame(t(vData[, -c(1:8)]))

2)在这里,为了理解上述部分的作用,我尝试仅查看数据框的标题,使用以下行,但它显示20,000行数据的前2列。 有没有办法只查看前两行?

head(dataExpr0, n = 2)

1 个答案:

答案 0 :(得分:2)

让我们从内到外区分你的电话。

基本索引

索引data.framematrix(假设为2维)时,您可以使用方括号表示法访问其中的单个元素,如您所见。例如,要查看第四行第五列中的值,您可以使用vData[4,5]。这也适用于行和/或列的范围,例如vData[1:4,5]将前4行和第5列作为向量返回。

注意:范围1:4也可以是数字的任意向量,例如vData[c(1,2,5),c(4,8)],它返回3乘2的矩阵。

BTW:默认情况下,当生成的切片/子矩阵的某个维度减少为1时(如后一个示例中所示), R 会将其删除到较低的结构(例如,matrix -> vector -> scalar)。在这种情况下,它会将vData[1:4,5]放到矢量中。您可以通过在方括号中添加看似第三个维度的内容来阻止这种情况发生:vData[1:4,5,drop=FALSE],意思是“不要删除简化的维度”。现在,你应该得到一个包含4行和1列的矩阵。

您可以通过阅读(例如)某些"Hadleyverse"来阅读有关如何对data.frames进行子集的更全面的解释。如果您这样做,我强烈建议您将其设为交互式会话:在阅读时使用 R ,以帮助巩固方法。

否定索引

负指数表示“除了列出的内容之外的所有”。在您的示例中,您将数据子集化以提取列1:8之外的所有内容。因此,您的vData[,-c(1:8)]将返回所有行和列9到20,即20K乘12矩阵。不小。

换位

你可能已经知道t()做了什么:转置矩阵,使它现在是12乘20K。

警告语:如果所有data.frame列属于同一类(例如'character','logical'),那么一切都很好。但是,data.frames允许不同列中不同类型的数据的事实不是矩阵共享的特征。如果一个data.frame列与其他列不同,则它们将转换为最高的通用格式,例如logical < integer < numeric < character

返回data.frame

转置它后(转换为matrix),转换回data.frame,根据以后打算处理数据的方式,可能需要也可能不需要。例如,如果行名称没有意义,那么转换为data.frame可能没那么有用。这是相对无关紧要的,但我不喜欢过度转换的东西。我也喜欢使用更简单的数据结构,矩阵通常比data.frames更快。

...仅为您提供data.frame或矩阵的顶级n 。在你的情况下,自从你转置它以来,它现在是20K列宽,在命令行上可能有点笨重。

替代

根据我之前提供的内容,您可能只想查看前几行和前几列? dataExpr0[1:5,1:5]可以正常工作(同样)head(dataExpr0[,1:5], n=5)

更多问题?

我强烈建议您阅读更多Hadleyverse,并对子集和基本数据管理更加熟悉。这是使用 R 的基础,而StackOverflow并不总是足够耐心地回答这样的基线问题。这个论坛最适合已经完成一些研究,阅读文档和帮助页面,并尝试过一些代码的人,并且只有在那之后才能弄清楚为什么它不起作用。你提供了一些很好的基本代码,但是SO并不适合教授如何从 R 开始。