r - 无法将 "gather"输出的列名称更改为默认名称以外的任何名称

标签 r tidyr

我正在尝试使用 gathertidyr包,但我无法从默认名称更改输出的列名称。例如:

df = data.frame(time = 1:100,a = 1:100,b = 101:200)
df.long = df %>% gather("foo","bar",a:b)
colnames(df.long)

给我
[1] "time"     "variable" "value"   

但不应该是"time" "foo" "bar" ?

我可以将“foo”和“bar”更改为我想要的任何内容,它仍然给我“变量”和“值”作为我的列名。

帮助。我在这里缺少什么?

最佳答案

这可能是一个错误。如果您愿意尝试其他方式,例如 data.table 的melt(),您可以执行以下操作:

# Need to load both data.table and reshape2
# For more information, could check ?data.table
library(reshape2); library(data.table)
setDT(df)
df %>% melt(id.vars = "time", variable.name = "foo", value.name = "bar")

> First 20 rows
    time foo bar
1:    1   a   1
2:    2   a   2
3:    3   a   3
4:    4   a   4
5:    5   a   5
6:    6   a   6
7:    7   a   7
8:    8   a   8
9:    9   a   9
10:   10   a  10
11:    1   b  11
12:    2   b  12
13:    3   b  13
14:    4   b  14
15:    5   b  15
16:    6   b  16
17:    7   b  17
18:    8   b  18
19:    9   b  19
20:   10   b  20

关于r - 无法将 "gather"输出的列名称更改为默认名称以外的任何名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130751/

相关文章:

r - 使用 t.test 时出错 - 'x' 观察值不够

r - 如何在 Ubuntu 上将 R 版本 3.2.2 降级到版本 3.1.1

r - group_by() 到 fill() 没有按预期工作

r - gvisScatterChart 动态定义系列

r - 识别 FALSE 的来源

r - 解释 princomp 结果

r - 在 R 中的 For 循环中执行特定于案例的编辑

regex - 我可以使用 tidyr 中的 separator() 或 extract() 将可变长度的数值拆分为其组成数字吗?

r - 使用 RVest 创建 HTML 表,然后使用操作和清理到 DF

r - 使用 tidyr unite 将列值与列名称组合