使用matrixStats::rowMedians 查找每行的中位数

Pab*_*ita 2 r matrix median dataframe

df我正在尝试使用rowMediansfrom包计算数据框的行中位数matrixStats

Abundance Sample1 Sample2 Sample3 Sample4 Sample5 Sample6 Sample7
Species1   2        4       0       0       0       6       0
Species2   3        5       6       4       0       0       0
Species3   3        7       2       5       8       0       0
Species4   0        0       3       8       0       0       8
Species5   7        5       6       0       0       4       4
Species6   4        2       3       0       0       2       1
Run Code Online (Sandbox Code Playgroud)

我想计算每行的中位数并将它们附加到新列中。我收到一个错误

参数“x”必须是向量或矩阵

所以我尝试将我的转换df为矩阵。该str函数显示该物种的每个值都是数字,所以我尝试:

library(matrixStats)
matrix(df, rownames.force = NA)
rowMedians(df)
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到同样的错误。任何帮助表示赞赏。

李哲源*_*李哲源 5

您不想包含该Abundance列来进行中值计算。让df成为您当前的数据框。

library(matrixStats)
rowMedians(as.matrix(df[-1]))
Run Code Online (Sandbox Code Playgroud)

除了上面的正确代码之外,还有一些注释。

  1. 你检查过是什么吗matrix(df)
  2. 即使它正确地返回一个数字矩阵,它也不会覆盖df. 所以rowMedians(df)会给你同样的错误,就好像什么都没发生一样;
  3. 作为练习,比较as.matrix(df[-1])as.matrix(df)

了解这些问题可以防止您将来出错。