假设我有一个数组
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)
但是会返回一个矩阵。
我知道必须有一个简单的方法来做到这一点......谢谢!
答案 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
注意,请使用array
或matrix
,而不是as.array
或as.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)))