将向量中的值粘贴到 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)

有什么想法吗?

【问题讨论】:

这对我来说没有多大意义。如果tmptmp &lt;- data.frame(a=1,b=2,c=3,d=4) 并且tmp2tmp2 &lt;- c("w","x","y","z") 你想要tmp 名称的最终结果是什么? tmp 的列名将是 aw bx cy dz 【参考方案1】:

您不需要任何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

【讨论】:

实际上我想将向量的值粘贴到列名中,在您的三列示例中,我想为每个列名添加来自不同向量的值,例如 tmp @Skampak 然后试试这个:names(file) &lt;- 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 中的列名的主要内容,如果未能解决你的问题,请参考以下文章

一种将不同长度的命名向量合并到 R 中的数据框(将名称信息保留为列名)的快速方法

根据 R 中的特定列名从字符向量中删除逗号

将数据框列拆分为 R 中的向量

R中 如何将数据框中的空值显示为NA

R:从R中的大型数据集中根据列中的值删除行[重复]

将多个工作表中的值复制并粘贴到摘要工作表中