Grup tarafından hesaplanan, bir fonksiyon tarafından döndürülen bir vektörün elemanları için ayrı sütunlara sahip bir data.table üretmek için idiomatic data.table yaklaşımı nedir? fonksiyon range()
olduğunutranskript vektörü data.table içinde gruplandırılmıştır
library(data.table)
data(iris)
setDT(iris)
, ben benzer bir çıktı isterdim:
iris[, .(min_petal_width = min(Petal.Width),
max_petal_width = max(Petal.Width)
), keyby = Species] # produces desired output
ama range()
işlevini kullanarak
Ben dcast
kullanabilirsiniz, ancak o çirkin:
dcast(
iris[, .(petal_width = range(Petal.Width),
value = c("min_petal_width", "max_petal_width")),
keyby = Species],
Species ~ value, value.var = "petal_width")
Ben çizgisinde daha basit ifadesi vardır umut ediyorum:
iris[, (c("min_petal_width","max_petal_width")) = range(Petal.Width),
keyby = Species] # doesn't work
Bu yeni bir data.table dönmez, ancak buna – digEmAll
@digEmAll iki sütun ekleme yerinde data.table irisi değiştirir, ah, şu tabii konum. –