R 将向量名称保留为数据框列名

R 将向量名称保留为数据框列名,r,R,在我的代码中,我用向量填充数据帧的列,如下所示: df1[columnNum] <- barWidth df1[columnNum]这是由[完成的,我只需使用cbind(): df1如果您有要应用的向量名称列表,您可以执行以下操作: namevec <- c(...,"barWidth"...,) columnNums <- c(...,10,...) df1[columnNums[i]] <- get(namevec[i]) names(df1)[columnNum

在我的代码中,我用向量填充数据帧的列,如下所示:

df1[columnNum] <- barWidth

df1[columnNum]这是由
[完成的,我只需使用
cbind()

df1如果您有要应用的向量名称列表,您可以执行以下操作:

namevec <- c(...,"barWidth"...,)
columnNums <- c(...,10,...)

df1[columnNums[i]] <- get(namevec[i])
names(df1)[columnNums[i]] <- namevec[i]

namevec
cbind()
保留名称,因此我会重新考虑我的方法。这可能是可以做到的,但我同意Joris的观点,重新考虑您的代码结构更明智。也许您可以解释一下为什么您真的需要这种结构?@JorisMeys我不喜欢使用
cbind
,因为它会大大降低我的代码速度。使用预先分配的数据帧和n填充数据执行得更快。对不起,我应该解释一下我使用上述结构的理由。
> dfrm["barWidth"] <- barWidth

> dfrm
  a V2 barWidth
1 a  1        1
2 b  2        2
3 c  3        3
4 d  4        4
dfrm <- data.frame(a=letters[1:4])
barWidth <- 1:4
newcols <- list(barWidth=barWidth, bw2 =barWidth)
dfrm[names(newcol)] <- newcol
dfrm
#
  a barWidth bw2
1 a        1   1
2 b        2   2
3 c        3   3
4 d        4   4
 df1 <- cbind( df1, barWidth )
namevec <- c(...,"barWidth"...,)
columnNums <- c(...,10,...)

df1[columnNums[i]] <- get(namevec[i])
names(df1)[columnNums[i]] <- namevec[i]
columnNums <- c(barWidth=4,...)
for (i in seq_along(columnNums)) {
   df1[columnNums[i]] <- get(names(columnNums)[i])
}
names(df1)[columnNums] <- names(columnNums)