这基本上是在询问如何将之前的问题应用到ffdf:R - applying ifelse to a whole data frame
我基本上都在尝试做同样的事情。给定ffdf数据帧,我基本上是在询问如何将ifelse应用于整个数据帧。请参阅两个用于测试的示例(数据框)。我正在尝试对test.ffdf做同样的事情。我已经尝试使用Google搜索q并且人们建议要获得ffdf的正常df部分,请使用physical()。 例如:How to use apply or sapply or lapply with ffdf?我可以用它来查看数据,但似乎没有返回可操作的向量。
test<-data.frame(year=c("1990","1991","","1993"),value=c(50,25,20,5), type=c('puppies', '', 'hello', 'party'))
test.ffdf = as.ffdf(test)
lapply(test, function(x) type.convert(as.character(x), na.strings = ""))
test[test==''] = NA
lapply(physical(test.ffdf), function(x) type.convert(as.character(x), na.strings = ""))
physical(test.ffdf)[physical(test.ffdf)=='']
同样,我可以执行像
这样的逻辑测试test.ffdf$value > 20
但我似乎无法找到将它应用于整个ffdf的方法,就像你可以用df一样。
答案 0 :(得分:1)
test.ffdf[,1:3][test.ffdf[,1:3]==''] <- NA
physical(test.ffdf)
#$year
#ff (open) integer length=4 (4) levels: 1990 1991 1993
# [1] [2] [3] [4]
#1990 1991 NA 1993
#$value
#ff (open) double length=4 (4)
#[1] [2] [3] [4]
#50 25 20 5
#$type
#ff (open) integer length=4 (4) levels: hello party puppies
# [1] [2] [3] [4]
# puppies NA hello party
library(ffbase)
test.ffdf <- droplevels(test.ffdf)
str(test.ffdf[,names(test.ffdf)])
# 'data.frame': 4 obs. of 3 variables:
# $ year : Factor w/ 3 levels "1990","1991",..: 1 2 NA 3
# $ value: num 50 25 20 5
# $ type : Factor w/ 3 levels "hello","party",..: 3 NA 1 2