gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:26:10 24 4
gpt4 key购买 nike

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

df1[columnNum] <- barWidth

这工作正常,除了一件事:我希望将矢量变量的名称(上面的 barWidth)保留为列标题,一次一列。此外,我不想使用 cbind。这大大减慢了我的代码的执行速度。因此,我使用的是预先分配的数据帧。

这可以在向量到列的分配中完成吗?如果没有,那么事后如何更改它?我找不到使用 colNames() 执行此操作的正确语法。

TIA

最佳答案

这是由 [<-.data.frame 完成的功能。可以想象它可以被一个查看参数名称的函数所取代,但它是一个如此基本的函数,我会犹豫。此外,函数定义顶部的这段代码似乎表明了对这种做法的厌恶:

> `[<-.data.frame`
function (x, i, j, value)
{
if (!all(names(sys.call()) %in% c("", "value")))
warning("named arguments are discouraged")
nA <- nargs()
if (nA == 4L) {
<snipped rest of rather long definition>

我不知道为什么会这样,但确实如此。也许你应该考虑使用 names<-在列分配之后,或使用此方法:

> 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

关于将向量名称保留为数据框列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8328677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com