我有以下内容(只是代码的一部分)
dat <- rbind(dat,sum(complete.cases(read.csv(files_list[i]))))
}
data.frame(id,dat)
但我得到以下内容。如何将第二列的标题更改为“值”?
id X1041L
1 2 1041
2 4 474
3 8 192
4 10 148
5 12 96
答案 0 :(得分:1)
您可以使用names<-
分配功能
names(dat)[2] <- "value"
您也可以使用setNames
,这与names<-
基本相同,但更改的数据会作为结果返回。
setNames(dat, c(names(dat)[1], "value"))
更新:为避免names
进行某些复制,您还可以使用attr<-
attr(dat, "names")[2] <- "value"
正如Ananda在评论中所提到的,没有复制,可以使用data.table
library(data.table)
setnames(dat, "X1041L", "value")
以下是复制:
> tracemem(dat)
# [1] "<0x23289b0>"
> names(dat)[2] <- "value"
# tracemem[0x23289b0 -> 0x26a1270]:
# tracemem[0x26a1270 -> 0x2244030]:
# tracemem[0x2244030 -> 0x26b9508]:
> tracemem(dat)
# [1] "<0x26b9508>"
> attr(dat, "names")[2] <- "value"
# tracemem[0x26b9508 -> 0x23dbd50]:
> library(data.table)
> tracemem(dat)
# [1] "<0x28c4408>"
> setnames(dat, "X1041L", "value")