Ich arbeite durch die Einführung data.table
Vignette wo in Abschnitt g) Warum j so flexibel halten? ein Beispiel gezeigt ist, dass zu meinem Anwendungsfall relevant:R-Datentabelle: Warum gehen Werte der verketteten Liste verloren?
DT[, .(val = list(c(a,b))), by = ID]
# ID val
# 1: b 1,2,3,7,8,9
# 2: a 4, 5,10,11
# 3: c 6,12
Ich habe ein minimales Arbeitsbeispiel, das Problem
set.seed(1234)
size <- 10
ordering_ids <- rep(1:size, sample(1:size, replace=TRUE))
products <- letters[seq_along(ordering_ids)]
k <- data.table(o=ordering_ids, p=products)
Für size <- 10
, höchstwahrscheinlich einige Einträge in NA
führen zu erläutern, aber das ist nicht die Problem. Das Problem ist, dass über einen bestimmten size
(etwa 6), verliere ich Einträge in den verketteten Listen:
k
# o p
# 1: 1 a
# 2: 1 b
# 3: 2 c
# 4: 2 d
# 5: 2 e
# 6: 2 f
# 7: 2 g
# 8: 2 h
# 9: 2 i
# 10: 3 j
# 11: 3 k
# 12: 3 l
# 13: 3 m
# 14: 3 n
# 15: 3 o
# 16: 3 p
# 17: 4 q
# 18: 4 r
# [...]
Ausführen des gleichen Befehl aus der Vignette:
k[o<=4, .(val=list(c(p))), by=o]
# o val
# 1: 1 a,b
# 2: 2 c,d,e,f,g,h,
# 3: 3 j,k,l,m,n,o,
# 4: 4 q,r,s,t,u,v,
nun für Aufträge o=3
, Die val
Liste enthält nicht alle Einträge (siehe k
Ausdruck, es sollte bis r
gehen).
Was ist das Problem hier und wie könnte ich es beheben?
Vielleicht ist er gerade nicht gedruckt. Geben Sie 'k [,. (Val = Liste (c (p))), durch = o] $ val [4]' ein, um den Wert zu überprüfen. – www
Ich sehe, ich habe tatsächlich gedacht, aber war falsch Drucken – TMOTTM
Wenn Sie nur tun, um die Daten in einer prägnanter Form zu durchsuchen, gibt es 'k [, toString (p), durch = o]'. Ich habe das Problem der Liste, die hier bei 6 Artikeln abgeschnitten wird, angesprochen: https://github.com/Rdatatable/data.table/issues/1523#issuecomment-349717900 – Frank