假設我想要逐行計算幾列的範圍的大小。對data.table的明智行操作
set.seed(1)
dat <- data.frame(x=sample(1:1000,1000),
y=sample(1:1000,1000),
z=sample(1:1000,1000))
使用data.frame(),我會做這樣的事情:
dat$diff_range <- apply(dat,1,function(x) diff(range(x)))
要說得簡單些,我在尋找這個操作,在每一行:
diff(range(dat[1,]) # for i 1:nrow(dat)
如果我這樣做對整個表,這將是這樣的:
setDT(dat)[,diff_range := apply(dat,1,function(x) diff(range(x)))]
但是,我將如何做只有命名(或編號)行?
這個問題聽起來像所有你想要做的是數據框或數據表的子集,但基於你的個人資料,你知道如何做到這一點。你究竟想在這裏實現什麼? – JeremyS
我認爲我的印象是,我可以在'apply()'表達式中使用表示法,類似於如何使用data.table重新引用列。這,我做了我所期望的:'dt [,diff_range:= apply(dt [,1:2,with = FALSE] ...'但我認爲有一些魔法可以做到:'apply(1: 2,...)''我想我在這裏回答了我自己的問題 –
噢,是的,你可以,但不能用數據表這種方式,因爲它會改變dt而不是複製我用一種方式添加了一個答案最常見的是'%in%' – JeremyS