我有三个字符向量:
blue <-c("Ti","Ka","Vv","Cn")
Turq <-c("Cc","Wx","Oq","Yt")
Indigo <-c("Gb","Ap")我想把它们组合成一个数据帧,这样它们看起来就像这样:
blue Ti
blue Ka
blue Vv
blue Cn
Turq Cc
Turq Wx
Turq Oq
Turq Yt
Indigo Gb
Indigo Ap我似乎找不到一种方法
发布于 2016-08-05 08:16:04
您可以将向量放在命名列表中,然后使用stack
lst <- list(blue = blue, Turq = Turq, Indigo = Indigo)
lst
# $blue
# [1] "Ti" "Ka" "Vv" "Cn"
# $Turq
# [1] "Cc" "Wx" "Oq" "Yt"
# $Indigo
# [1] "Gb" "Ap"
stack(lst)
# values ind
#1 Ti blue
#2 Ka blue
#3 Vv blue
#4 Cn blue
#5 Cc Turq
#6 Wx Turq
#7 Oq Turq
#8 Yt Turq
#9 Gb Indigo
#10 Ap Indigo发布于 2016-08-05 08:11:32
这不是很有效,但它可以完成工作。
blue <-c("Ti","Ka","Vv","Cn")
Turq <-c("Cc","Wx","Oq","Yt")
Indigo <-c("Gb","Ap")
#assumes no duplicates in the original vectors.
df<-as.data.frame(cbind(blue, Turq, Indigo))
library(tidyr)
df<-unique(gather(df))这将生成一些警告,但会提供您请求的结果。cbind开始重复向量,这样所有向量都有相同的长度。
发布于 2016-08-05 08:13:27
尝试:
df<-data.frame(blue,Turq,Indigo)
library(reshape)
unique(melt(cbind(1:nrow(df),df),id=1)[,-1])
variable value
1 blue Ti
2 blue Ka
3 blue Vv
4 blue Cn
5 Turq Cc
6 Turq Wx
7 Turq Oq
8 Turq Yt
9 Indigo Gb
10 Indigo Aphttps://stackoverflow.com/questions/38779183
复制相似问题