【发布时间】:2018-03-26 23:35:23
【问题描述】:
给定一个向量,我想使用一个“键”值将其转换为数据帧,该值在将要成为行的开始处随机分布在整个向量中。在这种情况下,“z”将是每列中的第一个值。
vd <- c("z","a","b","c","z","a","b","c","z","a","b","c","d")
结果数据应如下所示:
#using magrittr
data.frame(x1 = c("z","a","b","c", NA), x2 = c("z","a","b","c", NA), x3 = c("z","a","b","c","d"))
%>% transpose()
一种解决方案是找到向量中“键”之间的最大距离,然后在“部分”末尾插入小于最长“部分”的空白值,以便您可以使用matrix()
最好的方法是什么?
【问题讨论】:
-
key是什么意思? -
欢迎来到 SO。在您的问题标题中,您要求“向量到矩阵”,但随后您说您想将“它转换为数据框”......此外,您的代码会产生一个非常不可读的数据框。作为一个建议,我会命名我的列并使用 NA 而不是 ""
-
@smanski 我猜 OP 在他的例子中意味着“z”。这就是向量的划分方式。这是正确的,OP?您的问题在这里有些不清楚,是对我们逻辑的测试
-
@WC RN NR-DA(有趣的名字):您确定要在您的 data.frame 上使用
transpose吗?这将返回一个列表 -
read.table(text=gsub ("z","\n",paste(vd,collapse=" ")),fill=T)
标签: r