我有一个人物矢量 . 向量的每个元素都有一个name属性,它表示数据帧的行索引和数据帧的列索引,用句点分隔 . 这是一个玩具数据集:
# Create vector of characters
a <- c("foo","bar","dog","cat")
# Assign attributes. The data frame is 2x2:
attr(a, "names") <- c("1.1", "1.2", "2.1", "2.2")
我试图使用属性名称将向量转换为数据框,其中数据框中的每个元素都是向量中的值,元素的行是属性名称中句点之前的数字,元素的列是属性名称中小数点后的数字 . 玩具示例的输出应如下所示:
data.frame(var1 = c("foo","dog"), var2 = c("bar", "cat"))
我的实际矢量非常大,所以我希望有效地做到这一点 .
4 回答
您可以按行/列值使用索引来有效地执行此操作:
在后缀值上拆分
a
并将其强制转换为数据框 . 忽略stringsAsFactors=FALSE
如果您更喜欢因子列 .unname
如果结果上的rownames是可接受的码 -
赠送:
我可能会使用正则表达式来提取行和列位置,如下所示 .
我们可以使用
dplyr
和tidyr
.b2
是最终输出 .