r - 所有列上的 Pivot_longer

标签 r tidyr

我正在使用 tidyr 中的 pivot_longer 将数据帧从宽转换为长。我希望使用所有列并在列中维护行名。较早的melt 函数在此调用中完美运行

w1 <- reshape2::melt(w)
head(w1)
'data.frame':   900 obs. of  3 variables:
 $ Var1 : Factor w/ 30 levels "muscle system process",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Var2 : Factor w/ 30 levels "muscle system process",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ value: num  NA NA NA NA NA NA NA NA NA NA ...
但pivot_longer 没有
w %>% pivot_longer()

Error in UseMethod("pivot_longer") : 
  no applicable method for 'pivot_longer' applied to an object of class "c('matrix', 'array', 'double', 'numeric')"
任何建议表示赞赏

最佳答案

显然一些数据会有所帮助,但您的问题在于您使用的是 pivot_longer()在类 matrix 的对象上而不是 data.frame

library(tidyr)

# your error
mycars <- as.matrix(mtcars)
pivot_longer(mycars)
Error in UseMethod("pivot_longer") : 
  no applicable method for 'pivot_longer' applied to an object of class
  "c('matrix', 'array', 'double', 'numeric')"
pivot_longer()将在数据框上工作
> class(mycars)
[1] "matrix" "array" 
> class(mtcars)
[1] "data.frame"
记得指定 cols参数,这在 reshape2::melt() 中不是必需的(文档中的更多信息)。你想要所有的列,所以 cols = everything() :
pivot_longer(mtcars, cols = everything())
(免责声明:当然,mtcars 不是转换为长格式的最佳数据集)

关于r - 所有列上的 Pivot_longer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63334436/

相关文章:

r - 跨字符串向量迭代单词并将更改应用于单个单词

r - 具有大量点的 dist 函数

python - 抓取搜索/身份验证生成的页面

r - 如何使用 purrr 和 tidyr 修改嵌套数据框中的列类型

r - 具有重复列名的整洁 data.frame

r - 识别 R 数据框列中的数字或字符序列

r - 如何将向量分配给 dplyr mutate 中的多个变量

r - 无法使用 R 将 Inf 替换为 dplyr 链中的自定义值

r - 整理 R 数据框中的数字数组

使用另一个数据框作为 map 替换数据框中的列?