将矢量中的值粘贴到R中的列名称

时间:2018-03-15 22:01:26

标签: r

我想将矢量中的值粘贴到数据框的列名中。假设文件有4列,tmp2向量有4个值。 for循环工作得很好(新的colnames是tmp的值和tmp2的值)但我想尝试使用apply系列函数

tmp <- colnames(file)

tmp2 <- c(1,2,3,4)

for(i in 1:length(tmp)){

names(tmp)[i] = paste(tmp[i], tmp2[i])

}

例如像

这样的东西
sapply(tmp,function(x,y){

names(x)<-paste(x,y)
},y=tmp2)

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您不需要任何looppaste也是矢量化的。据我所知,OP希望用序列号后缀所有列。

试试吧:

names(file) <- paste(names(file),1:ncol(file), sep = "")
# A1 B2  C3
# 1  A  1 101
# 2  B  2 102
# 3  C  3 103
# 4  D  4 104
# 5  E  5 105

数据

file <- data.frame(A = "A":"E", B = 1:5, C = 101:105)
file
# A B   C
# 1 A 1 101
# 2 B 2 102
# 3 C 3 103
# 4 D 4 104
# 5 E 5 105

答案 1 :(得分:1)

names(tmp)=mapply(x=tmp,y=tmp2,function(x,y)paste(x,y))

答案 2 :(得分:0)

如果你想以data.table方式进行,这在计算上并不昂贵。

library(data.table)
file <- data.table(x=(1:3),y=letters[1:3],z=(1),w=letters[1:3])
tmp2 <- paste(colnames(file),rep(1:nrow(file)))
setnames(file,1:ncol(file),tmp2)

编辑:如果你想用序列号后缀colnames,如@MKR所述