I Kickass @ eddi Antwort überarbeitet so:
- Es ist eine Funktion
- Es ist nicht auf den Arbeitsbereich Krempel hat (es gerade lädt
data.table
)
- I Spalten kürzer umbenannt und fügte etwas mehr
- Klassen der Listenelemente sind auch
- ich das Objekt und Daten-Set Titel
- annoyin inspiziert Rückkehr g Paket Warnungen können
versteckt werden Sie müssen nur laufen diese (vorausgesetzt, Sie haben data.table
installiert ist):
ds <- dataset_summary() # around 5 seconds if you have a lot of packages like me
Es arbeitet mit dem caret
Paket, das problematisch zu sein verwendet (Editierhistorie sehen)
subset(ds,Package == "caret")
# Package Object Item Title class nrow ncol char fact ord num int list df
# 143 caret GermanCredit GermanCredit German Credit Data data.frame 1000 62 0 1 0 54 7 0 0
# 144 caret Sacramento Sacramento Sacramento CA Home Prices data.frame 932 9 0 3 0 3 3 0 0
# 145 caret tecator absorp Fat, Water and Protein Content of Meat Samples matrix 215 100 NA NA NA NA NA NA NA
# 146 caret BloodBrain bbbDescr Blood Brain Barrier Data data.frame 208 134 0 0 0 118 16 0 0
# 147 caret cars cars Kelly Blue Book resale data for 2005 model year GM cars data.frame 804 18 0 0 0 1 17 0 0
# 148 caret cox2 cox2Class COX-2 Activity Data factor NA NA NA NA NA NA NA NA NA
einfach für einen bestimmten Datensatz Teilmenge und schauen, Klassen list
Elemente und data.frame
Spalten gezählt.
subset(ds,class == 'list' & df > 0,select=-c(2,4))
# Package Item class nrow ncol char fact ord num int list df
# 225 ecodist iris.fit list NA NA 0 0 0 1 0 0 1
# 238 ElemStatLearn orange10.test list NA NA 0 0 0 0 0 0 50
# 239 ElemStatLearn orange10.train list NA NA 0 0 0 0 0 0 50
# 240 ElemStatLearn orange4.test list NA NA 0 0 0 0 0 0 50
# 241 ElemStatLearn orange4.train list NA NA 0 0 0 0 0 0 50
# 346 lava missingdata list NA NA 0 0 0 0 0 0 4
Arbeitsbereich ist sauber
ls()
# [1] "dataset_summary" "ds"
Nichts von data.table
geladen abgesehen wurde.
search()
# [1] ".GlobalEnv" "package:data.table" "package:Matrix" "package:sp" "package:timeSeries" "package:timeDate"
# [7] "tools:rstudio" "package:stats" "package:graphics" "package:grDevices" "package:utils" "package:datasets"
# [13] "package:methods" "Autoloads" "package:base"
Die Funktion
dataset_summary <- function(silent = TRUE){
if(silent){
w <- options()$warn
options(warn = -1)
on.exit(options(warn = w))
}
ws <- ls(envir=.GlobalEnv)
library(data.table)
dt = as.data.table(data(package = .packages(all.available = TRUE))$results)
dt = dt[, `:=`(Item = sub(' \\(.*', '', Item),
Object = sub('.*\\((.*)\\)', '\\1', Item))]
df <- as.data.frame(dt[, {
data(list = Object, package = Package)
d = eval(parse(text = Item))
classes = if (sum(class(d) %in% c('data.frame','list')) > 0) unlist(lapply(d, class))
else NA_integer_
.(class = paste(class(d), collapse = ","),
nrow = if (!is.null(nrow(d))) nrow(d) else NA_integer_,
ncol = if (!is.null(ncol(d))) ncol(d) else NA_integer_,
char = sum(classes == 'character'),
fact = sum(classes == 'factor'),
ord = sum(classes == 'ordered'),
num = sum(classes == 'numeric'),
int = sum(classes == 'integer'),
list = sum(classes == 'list'),
df = sum(classes == 'data.frame'))
}
, by = .(Package, Item)])
rm(list=setdiff(ls(envir=.GlobalEnv),ws),envir=.GlobalEnv)
df
}
das ist schön ... –
FYI Ich habe es in die Funktion überarbeitet, die ich verwenden werde, siehe meine aktualisierte Antwort. –