Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 具有可变行长的数据帧向量_R - Fatal编程技术网

R 具有可变行长的数据帧向量

R 具有可变行长的数据帧向量,r,R,给定一个向量,我想用一个“key”值将它转换成一个数据帧,该值随机分布在向量的一行开头。在这种情况下,z将是每列中的第一个值 vd <- c("z","a","b","c","z","a","b","c","z","a","b","c","d") 一种解决方案是找到向量中“关键点”之间的最大距离,然后在“部分”末尾插入小于最长“部分”的空白值,以便使用矩阵 最好的方法是什么 plyr::ldply(split(vd, cumsum(vd == "z")), rbind)[-1] 抄袭

给定一个向量,我想用一个“key”值将它转换成一个数据帧,该值随机分布在向量的一行开头。在这种情况下,z将是每列中的第一个值

vd <- c("z","a","b","c","z","a","b","c","z","a","b","c","d")
一种解决方案是找到向量中“关键点”之间的最大距离,然后在“部分”末尾插入小于最长“部分”的空白值,以便使用矩阵

最好的方法是什么

plyr::ldply(split(vd, cumsum(vd == "z")), rbind)[-1]
抄袭

结果:

  1 2 3 4    5
1 z a b c <NA>
2 z a b c <NA>
3 z a b c    d
我们可以使用cumsum来确定组,然后将它们拆分。然后我们附加向量并将其格式化为data.frame


你说的钥匙是什么意思?欢迎来到SO。在你的问题标题中,你要求“向量到矩阵”,但你说你想把“它转换成数据帧”。。。此外,您的代码会生成一个非常不可读的数据帧。作为一个建议,我会给我的专栏命名,并使用NA而不是@smanski,我猜OP在他的例子中的意思是“z”。这就是向量的划分方式。这是正确的吗,OP?您的问题在这里有点不清楚,这是对我们的测试logic@WCRN NR-DA有趣的名称:您确定要在data.frame上使用转置吗?这将返回一个listread.tabletext=gsub z\n,PastVD,collapse=,fill=t ICE catch发现另一个问题您应该添加库callI真的很惊讶看到这一点-另一个问题是今天早些时候问的,起初我认为是同一个人问了两次他们的问题。。。
  1 2 3 4    5
1 z a b c <NA>
2 z a b c <NA>
3 z a b c    d
x <- split(vd,cumsum("z"==vd))
maxl <- max(lengths(x))
as.data.frame(lapply(x,function(y) c(y,rep(NA,maxl-length(y)))))
#     X1   X2 X3
# 1    z    z  z
# 2    a    a  a
# 3    b    b  b
# 4    c    c  c
# 5 <NA> <NA>  d