将命名向量转换为数据框

15

我有一个命名向量:

x <-  1:5

names(x) <- c('0 15', '1 15', '2 15', '0 16', '1 16')

如何最佳地将x转换为此数据框:

xDF <- data.frame(V1 = c(0, 1, 2, 0, 1), V2 = c(15, 15, 15, 16, 16), V3 = 1:5)
3个回答

16

这里有一种非常直接的方法:

cbind(read.table(text = names(x)), x)
     V1 V2 x
0 15  0 15 1
1 15  1 15 2
2 15  2 15 3
0 16  0 16 4
1 16  1 16 5

在这种情况下,read.table将自动分割您的names(x) 组件(默认情况下,按空格分割,但如果需要,可以指定其他字符)。

您还可以直接在cbind中为x设置名称:

cbind(read.table(text = names(x)), V3 = x)
更直接的方法是使用我的 "splitstackshape" 包中的 cSplit,像这样:
library(splitstackshape)
cSplit(stack(x), "ind", " ")

5
我会这样做:

我会像这样做:

res = data.frame(cbind(do.call('rbind', strsplit(names(x), " ")), x))
res
     V1 V2 x
0 15  0 15 1
1 15  1 15 2
2 15  2 15 3
0 16  0 16 4
1 16  1 16 5

请注意,数据类型尚未正确设置,前两列为“因子”类型。

0
这是一个使用enframeseparatetidyverse解决方案。
library(tidyverse)
enframe(x, name = "v12", value = "v3") %>% 
  separate(v12, into = c("v1", "v2"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接