堆叠数字数据框并在单个指令中更改列名称

Del*_*aIV 1 r dataframe

我有一个纯粹的数字数据框,我想要将它们的列堆叠(连接)在一起.stack干得好:

foo <- matrix(rnorm(100),20,5)
foo <- data.frame(foo)
bar <- stack(foo)
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢给出的默认列名stack,即valuesid.当然,我可以改变它们

colnames(bar) <- c("x","y")
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有任何功能可以让我定义结果(堆叠)数据帧的列名.

Lor*_*ssi 5

您可以使用库中的melt功能reshape2:

library(reshape2)
bar <- melt(foo, value.name = "x", variable.name = "y")
Run Code Online (Sandbox Code Playgroud)

PS:

  • 请注意,列的顺序与调用堆栈函数产生的顺序相反
  • 您可以使用包中的melt功能data.table完全相同的方式.