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

时间:2016-09-16 02:31:33

标签: arrays r dataframe

假设我有一个数组

arr = as.array(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4))

我想将其转换为数据框,所以我尝试:

df = as.data.frame(arr)

但这给了我一个nrows = 7和ncols = 1的数据框。我需要一个nrows = 1和ncols = 7的数据框。我试过做t(df)但是会​​返回一个矩阵。

我知道必须有一个简单的方法来做到这一点......谢谢!

2 个答案:

答案 0 :(得分:3)

怎么样:

arr = array(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4), dim = c(1, 7))
as.data.frame(arr)

#   V1  V2  V3  V4  V5  V6  V7
#1 1.1 0.5 3.2 4.3 5.5 6.3 0.4

注意,请使用arraymatrix,而不是as.arrayas.matrix

alistaire提到了一个好方法

as.data.frame(t(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4)))

#   V1  V2  V3  V4  V5  V6  V7
#1 1.1 0.5 3.2 4.3 5.5 6.3 0.4

会自动为您转换dim

答案 1 :(得分:3)

如果我们需要7列数据集,我们可以在as.data.frame.list上使用vector

as.data.frame.list(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4))

正如@ZheyuanLi所提到的,上面将附加“X”作为列名的前缀。我们可以在col.names参数

中更改列名
as.data.frame.list(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4), col.names = paste0("V", 1:7))

或另一种选择是拥有vector元素的名称

as.data.frame.list(setNames(c(1.1,0.5,3.2,4.3,5.5,6.3,0.4), paste0("V", 1:7)))