将向量中的值粘贴到 R 中的列名
Posted
技术标签:
【中文标题】将向量中的值粘贴到 R 中的列名【英文标题】:Paste values from a vector to column names in R 【发布时间】:2018-03-15 22:01:25 【问题描述】:我想将向量中的值粘贴到数据框的列名中。假设文件有 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)
有什么想法吗?
【问题讨论】:
这对我来说没有多大意义。如果tmp
是tmp <- data.frame(a=1,b=2,c=3,d=4)
并且tmp2
是tmp2 <- c("w","x","y","z")
你想要tmp
名称的最终结果是什么?
tmp 的列名将是 aw bx cy dz
【参考方案1】:
您不需要任何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
【讨论】:
实际上我想将向量的值粘贴到列名中,在您的三列示例中,我想为每个列名添加来自不同向量的值,例如 tmp @Skampak 然后试试这个:names(file) <- paste(names(file), tmp, sep = "")
【参考方案2】:
names(tmp)=mapply(x=tmp,y=tmp2,function(x,y)paste(x,y))
【讨论】:
【参考方案3】:如果您想以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 所述
【讨论】:
以上是关于将向量中的值粘贴到 R 中的列名的主要内容,如果未能解决你的问题,请参考以下文章