如何在不更改原始对象的情况下,动态指定r.data表中要更改的列的名称?
我有R如何在不更改原始对象的情况下,动态指定r.data表中要更改的列的名称?,r,data.table,R,Data.table,我有Rdata.table对象,我想打印出data.table,并对其中一列(我动态指定)进行一些更改 示例: 让我们创建一个data.table,如: DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9) 我想把y列或v列增加1,在不改变实际DT的情况下看到结果 如果我可以更改DT,我可以运行: col_to_change = 'y' DT[, c(col_to_change) := list(get(col_to_
data.table
对象,我想打印出data.table,并对其中一列(我动态指定)进行一些更改
示例:
让我们创建一个data.table,如:
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
我想把y列或v列增加1,在不改变实际DT的情况下看到结果
如果我可以更改DT,我可以运行:
col_to_change = 'y'
DT[, c(col_to_change) := list(get(col_to_change) + 1)]
DT
但是,我不想对DT进行更改。我可以通过制作表的副本,然后调整更改的对象来解决此问题,例如:
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
DT2 <- copy(DT)
DT2[, c(col_to_change) := list(get(col_to_change) + 1)]
DT2
DT2 <- copy(DT)
DT2[, c(col_to_change) := list(get(col_to_change) + 1)]
DT2
我希望能够做到这一点,而不必首先复制DT,因此最终我会得到如下结果:
finalDT <- rbindlist(list(DT, DT[, <<magic goes here>>]))
finalDT可能是DT[,c(.SD,((NEW=get(col)+1))]我希望变量具有原始名称您的意思是在同一个表中,您希望新旧列并排进行比较,但新旧列具有相同的名称?然后可能是DT[,c(.SD,setNames(list(get(col)+1),col])。不确定是否会有警告。不要在电脑前打电话test@chinsoon12很接近,但不完全。它添加了一个额外的列,而我希望看到相同数量的列以原始顺序包含变量。因此,类似于orig\u name\u顺序的东西
finalDT <- rbindlist(list(DT, DT[, <<magic goes here>>]))