从ff对象中删除列

时间:2015-09-23 12:44:09

标签: r subset read.table ff

我想从ff对象中删除一列:

输入文件file.txt的制表符分隔如下:

Col1  Col2  Col2
 x1    x1    x1
 x2    x2    x3
 x3    x4    xh

然后阅读ff包:

library(ff)
df <- read.table.ffdf("file.txt", header=T, sep="\t")

我想排除第一列(或在导入文件时跳过它)。使用普通的数据帧或矩阵,我可以简单地应用这样的命令:

df <- df[,-1]

但是,在ff对象中不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

假设你有一个像这样的测试ffdf对象:

#create a test ffdf object
testdf <- as.ffdf(data.frame(a=runif(100), b=runif(100), c=runif(100)))

为了删除第一列,即列a,您可以这样做:

testdf$a <- NULL

正如您所见,列a被消除了:

> testdf
ffdf (all open) dim=c(100,2), dimorder=c(1,2) row.names=NULL
ffdf virtual mapping
  PhysicalName VirtualVmode PhysicalVmode  AsIs VirtualIsMatrix PhysicalIsMatrix PhysicalElementNo PhysicalFirstCol PhysicalLastCol PhysicalIsOpen
b            b       double        double FALSE           FALSE            FALSE                 1                1               1           TRUE
c            c       double        double FALSE           FALSE            FALSE                 2                1               1           TRUE
ffdf data
             b          c
1   0.10627724 0.93927750
2   0.29170912 0.96716656
3   0.17588141 0.43387388
4   0.69673704 0.39921435
5   0.93715272 0.41446052
6   0.87093269 0.10513608
7   0.87827066 0.72423617