从 ff 对象中删除列

Drop columns from ff objects

我想从 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对象中不起作用。有什么想法吗?

你可以这样做:

假设您有一个这样的测试 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