【发布时间】:2016-01-13 09:11:36
【问题描述】:
假设我有一个包含 3 行和 4 列的示例 csv 文件。假设它如下所示:
name1 name2 name3 name4
11 12 13 14
21 22 23 24
31 32 33 34
我使用fread() 阅读它(我使用小样本进行说明):
data <- fread(sample.csv, stringsAsFactors=FALSE)
那我做
class(data)
它会返回
[1] "data.table" "data.frame"
我想看第四列的第一个元素,我试过了
data[1,4]
但它返回 4(我猜这是列的索引)。
有趣的是,当我调用以下代码时
data[1,]
或
data[1]
它返回第一行。
原来如此
data <- data.frame(data)
将数据转换为数据框。
我的问题:
1. 由于初始数据有两个类,有没有办法让我选择一个类并“删除”另一个类?就我而言,我只想将数据用作数据框。
2. 一般情况下,如果数据有多个类,我们可以选择一个类来保留吗?例如,as.POSIXct() 将返回一个具有两个类(“POSIXct”“POSIXt”)的对象。如果我们只想保留其中一个类怎么办?任何函数都以通用方式用于此目的?
【问题讨论】:
-
您可以在
fread()中获取带有data.table = FALSE的常规数据框。其他函数是class<-()、oldClass()、unclass()、help(class)等。但您可能不想从日期时间中删除POSIXt,因为它可能会产生意想不到的后果 -
解决得很好。谢谢。
-
不管怎样,
data[1,4]将在 data.table 的未来迭代中表现得如您所愿。
标签: r class data.table fread