如何将数据帧转换为 R 中的数组?

How to convert a dataframe into an array in R?

我有兴趣计算 data.frame 的中位数。我找到了两种方法:1) tapply 和 2) aggregate.

出于很多原因,我对“aggregate方法”更感兴趣。但是,由于它给了我一个 data.frame 并且我需要一个数组,所以我需要对其进行转换。我发现有一个函数试图执行此操作 (simply2array),但它并没有给我准确的数组。

这是我的例子:

当我尝试使用 tapply 计算中位数时,它给了我一个数组

 df_median2 <- tapply(mtcars$mpg, mtcars$gear, median)
    > class(df_median2)
    [1] "array"

但是,我需要使用 aggregate,这给了我一个数据框。在下面的代码中,我尽量改成数组(没有成功)

df_median <- aggregate(mtcars$mpg ~ mtcars$gear, FUN=median) 
df_median <- as.data.frame(t(df_median))
names(df_median) <- df_median[1,]
df_median <- df_median[-1,]
rownames(df_median) <- "mpg"

my_array <- simplify2array(df_median)
> class(my_array)
[1] "numeric"

所以...我的问题是,您知道是否可以将 data.frame 转换为 R 中的数组吗?

非常感谢

此致

最简单的方法是使用这个:

array(unlist(df_median))

如果你想包含 colnames 你可以在 array()

中使用 dimnames = 参数

如果您还想包含 rownames,则必须在 array()

中同时提供 dimnames = dim = 参数