The 'na.count' physical attribute gives the current number of NAs if properly initialized and properly maintained, see details.

# S3 method for class 'ff'
na.count(x, ...)
# Default S3 method
na.count(x, ...)
# S3 method for class 'ff'
na.count(x, ...) <- value
# Default S3 method
na.count(x, ...) <- value

Arguments

x

an ff or ram object

...

further arguments (not used)

value

NULL (to remove the 'na.count' attribute) or TRUE to activate or an integer value

Details

The 'na.count' feature is activated by assigning the current number of NAs to na.count(x) <- currentNA and deactivated by assigning NULL. The 'na.count' feature is maintained by the, getset.ff, readwrite.ff and swap, other ff methods for writing – set.ff, [[<-.ff, write.ff, [<-.ff – will stop if 'na.count' is activated. The functions na.count and na.count<- are generic. For ram objects, the default method for na.count calculates the number of NAs on the fly, thus no maintenance restrictions apply.

Value

NA (if set to NULL or NA) or an integer value otherwise

Author

Jens Oehlschlägel, Daniel Adler (C++ back-end)

See also

getset.ff, readwrite.ff and swap for methods that support maintenance of 'na.count', NA, is.sorted for yet another physical attribute

Examples

  message("--- ff examples ---")
#> --- ff examples ---
  x <- ff(1:12)
  na.count(x)
#> [1] NA
  message("activate the 'na.count' physical attribute and set the current na.count manually")
#> activate the 'na.count' physical attribute and set the current na.count manually
  na.count(x) <- 0L
  message("add one NA with a method that maintains na.count")
#> add one NA with a method that maintains na.count
  swap(x, NA, 1)
#> [1] 1
  na.count(x)
#> [1] 1
  message("remove the 'na.count' physical attribute (and stop automatic maintenance)")
#> remove the 'na.count' physical attribute (and stop automatic maintenance)
  na.count(x) <- NULL
  message("activate the 'na.count' physical attribute and have ff automatically 
calculate the current na.count")
#> activate the 'na.count' physical attribute and have ff automatically 
#> calculate the current na.count
  na.count(x) <- TRUE
  na.count(x)
#> [1] 1
  message("--- ram examples ---")
#> --- ram examples ---
  x <- 1:12
  na.count(x)
#> [1] NA
  x[1] <- NA
  message("activate the 'na.count' physical attribute and have R automatically 
calculate the current na.count")
#> activate the 'na.count' physical attribute and have R automatically 
#> calculate the current na.count
  na.count(x) <- TRUE
  na.count(x)
#> [1] 1
  message("remove the 'na.count' physical attribute (and stop automatic maintenance)")
#> remove the 'na.count' physical attribute (and stop automatic maintenance)
  na.count(x) <- NULL
  na.count(x)
#> [1] NA
  rm(x); gc()
#>           used (Mb) gc trigger  (Mb) max used  (Mb)
#> Ncells 1162089 62.1    1994352 106.6  1994352 106.6
#> Vcells 2165743 16.6    8790397  67.1  8790397  67.1