在data.table R中为setnames添加字母

时间:2016-11-22 05:33:43

标签: r data.table

更改data.table的colnames的最简单方法是保留原始名称,但前面(或后面)有一个或几个其他字母。 例如。我正在运行以下代码

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个选定列 我希望在将tmp, tmp1, tmp2合并在一起之前更改名称,使名称分别位于

之前
  1. m_ for tmp
  2. s_ for tmp1
  3. na_ for tmp2
  4. 有没有办法直接在lapply函数中执行此操作,或者比避免通过setnames(tmp, ...)重新输入65个名称更好的方法? 我知道有可能创建一个colnames矢量,然后将该矢量与另一个矢量组合在一起。 “m_”但必须有一种更明智的方式。

1 个答案:

答案 0 :(得分:2)

我们可以将pastesetnames一起使用来更改列名

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

和类似的

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