首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R将字符向量组合为dataframe,并将向量名称作为行id

R将字符向量组合为dataframe,并将向量名称作为行id
EN

Stack Overflow用户
提问于 2016-08-05 08:00:41
回答 4查看 376关注 0票数 1

我有三个字符向量:

代码语言:javascript
复制
blue <-c("Ti","Ka","Vv","Cn")
Turq <-c("Cc","Wx","Oq","Yt")
Indigo <-c("Gb","Ap")

我想把它们组合成一个数据帧,这样它们看起来就像这样:

代码语言:javascript
复制
blue   Ti
blue   Ka
blue   Vv
blue   Cn
Turq   Cc
Turq   Wx
Turq   Oq
Turq   Yt
Indigo Gb
Indigo Ap

我似乎找不到一种方法

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-05 08:16:04

您可以将向量放在命名列表中,然后使用stack

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2016-08-05 08:11:32

这不是很有效,但它可以完成工作。

代码语言:javascript
复制
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开始重复向量,这样所有向量都有相同的长度。

票数 0
EN

Stack Overflow用户

发布于 2016-08-05 08:13:27

尝试:

代码语言:javascript
复制
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    Ap
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38779183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档