我想将矢量中的值粘贴到数据框的列名中。假设文件有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)
有什么想法吗?
答案 0 :(得分:3)
您不需要任何loop
。 paste
也是矢量化的。据我所知,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所述