0
我在更大的數據集中執行以下操作時遇到問題。我想知道是否有內置的方法來使用ff或ffdf來完成它。將值重新分配給ffdf中的列[R]
實施例:
require(ffbase)
> iris
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
#Convert to ff object
A <- as.ffdf(iris)
我可以訪問「物種」列
A$species
> A$Species
ff (open) integer length=150 (150) levels: setosa versicolor virginica
[1] [2] [3] [4] [5] [6] [7] [8] [143] [144]
setosa setosa setosa setosa setosa setosa setosa setosa : virginica virginica
[145] [146] [147] [148] [149] [150]
virginica virginica virginica virginica virginica virginica
但是,如果我想:使用SUBSTR並重新分配它作爲一個不同的列修改字符列在ffdf對象以子字符串1到3,例如,我得到以下錯誤:
> substr(as.character(A$Species),1,3)
Error in substr(as.character(A$Species), 1, 3) :
extracting substrings from a non-character object
有什麼準則來修改ffdf對象中的列?
編輯
我也嘗試了ffdfdply的方法。這似乎需要很長的一個相當小的數據:
substrff <- function(x){
x$new <- substr(x$Species,1,8)
return(x)
}
B <- ffdfdply(x=A, split = A$Species, FUN = substrff)
謝謝!我不知道「with」或「with.ffdf」的功能是否允許列上的大多數操作? – dleal
with.ffdf將數據以行塊形式存儲在RAM中(受RAM可用性的限制),然後您可以對指定的列執行任何矢量化操作。 – jwijffels