2016-11-22 90 views
3

更改data.table的colnames的最簡單方法是如何保留原始名稱,但前面(或後面)有一個或幾個其他字母。 例如我運行下面的代碼向data.table中的setname添加字母R

tmp <- DT[, lapply(.SD, mean, na.rm=T), by = .(NACE2), .SDcols=cols] 
tmp1 <- DT[, lapply(.SD, sum, na.rm=T), by = .(NACE2), .SDcols=cols] 
sna <- function(x) { sum(!is.na(x))} 
tmp2 <- DT[, lapply(.SD, sna), by = .(NACE2), .SDcols=cols] 

這導致多個data.tables它們都具有在DT原來的名字,通過.SDcols 有65分選定列確定的相同的名字,我想改變colnames在這樣一種方式,名稱分別由

  1. M_爲tmp
  2. S_之前爲tmp1
  3. 01合併 tmp, tmp1, tmp2在一起之前
  4. na_爲tmp2

有直接在lapply功能或比避免通過setnames(tmp, ...)重新輸入65名更好的方式這樣做的呢? 我知道有可能創建一個姓氏的向量,然後將該向量與另一個由例如「m_」但必須有一個更明智的方法。

回答

2

我們可以使用pastesetnames更改列名

setnames(tmp, paste0("m_", names(tmp))) 

,同樣

setnames(tmp1, paste0("s_", names(tmp1))) 
setnames(tmp2, paste0("na_", names(tmp2)))