select 任何行作为数据框中的 header 行的最有效方法是什么?

what is the most efficient way to select any row as the header row in a data frame?

我有一个包含大约 561 列和大约 7300 行的数据框。现在的问题是我无法删除第一个 header 以 V1...V561 作为变量名称的行,而是将其切换到下面包含实际变量名称的行。我尝试了很多技术,因为我已经在这里浏览了很多堆栈帖子,但其中 none 似乎适用于我的情况。我什至试过 colnames(df) <- lapply(df[1,], as.character 但它似乎并没有真正起作用。此外,我可以使用另一种替代方法 names() 函数,但我不知道如何使用它来实现我的目的。

假设我有两个数据框,一个包含一列 561 个单元格,这些单元格将被转换为第二个数据框的变量名,其中 V1...V561 作为变量名。明白了吗?我需要替换数据框 1 中的那一列 561 个单元格,将它们转换到第二个数据框的顶部,这样我就可以获得实际的变量名称。有人告诉我使用 names() 函数,但我不太清楚确切的语法,因为我并没有真正使用过这个函数。

编辑

这里有一个更好的方式来描述需要做什么。

所以这是 df1,其中包含我需要放在 df2 的第一行的单个列。

df1

x
These
are
the
variables

df2

x    y    z   x1
0    1    2   3
1    2    3   4
2    3    4   5

那得改成

df2
These    are    the   variables
0        1      2     3
1        2      3     4
2        3      4     5

如果 df1 是您要重命名的数据,df2 有一个名为 row 的行包含您想要的名称,请尝试

names(df1) <- sapply(df2[row,], as.character)

as.character 因为字符串可能是因子。

编辑

刚刚注意到你说名字在一列中,所以如果有名字的列是 cols

names(df1) <- as.character(df2$cols)