Bir data.table cols alt kümesini yeni bir sınıfa dönüştürmek istiyorum. Burada popüler bir soru var (Convert column classes in data.table) ama cevap, başlangıç nesnesinde çalışmak yerine yeni bir nesne oluşturur.data.table dosyasındaki * bazı * sütun sınıflarını dönüştürebilir
dat <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
cols <- c('ID', 'Quarter')
nasıl en iyi (örn) bir faktör sadece cols
sütunlara dönüştürmek için:
dat[, cols] <- lapply(dat[, cols], factor)
ama bu bir data.table için çalışmaz, ne de Matt Dowle bağlanan söz konusu bu
dat[, .SD := lapply(.SD, factor), .SDcols = cols]
bir yorumunu yapar: Normal bir data.frame size bu yapabileceğini (Aralık 2013'ten itibaren), iyi çalışıyor, ama biraz daha az zarif görünüyor aşağıdakileri önerir.
for (j in cols) set(dat, j = j, value = factor(dat[[j]]))
anda daha iyi bir data.table cevap var mı (yani bir karşı değişkeni oluşturmaz kısa +), ya da sadece yukarıdaki + rm(j)
kullanmalıyım?
dat[, (cols) := lapply(.SD, factor), .SDcols=cols]
:=
kullanarak:
Ben yöntem Matt Dowle iyi olurdu önerir inanıyoruz. Sonuçta, * data.table * yazarıdır. –
Doğru, ama yorum 2013'ten beri ve o zamandan bu yana pek çok paket güncellemesi yapıldı, bu yüzden – arvi1000
bu olta fırlatmaya değdiğini düşündüğüm için "(()) set (...)' deyiminde daha fazla ayrıntı eklendi Son zamanlarda burada: http://stackoverflow.com/a/33000778/403310 –