我有一个字符向量列表列表,其形式如下:
terms <- list(
term_id = c("1", "2", "3"),
major_cd = list(
c("ABCD", "AS56"),
c("RCPZ", "AS56"),
c("RCET", "ABCD", "RCPZ", "AS56")
)
)
我想创建一个数据框,如:
> df
term_id major_cd
1 "1" "ABCD"
2 "1" "AS56"
3 "2" "RCPZ"
4 "2" "AS56"
5 "3" "RCET"
6 "3" "ABCD"
7 "3" "RCPZ"
8 "3" "AS56"
> class(df)
[1] "data.frame"
答案 0 :(得分:2)
在Hadleyverse中,您可以使用<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";
mail($to,$subject,$txt,$headers);
?>
:
unnest
我已经使用了library(dplyr)
library(tidyr)
as_data_frame(terms) %>% unnest
## Source: local data frame [8 x 2]
##
## term_id major_cd
## (chr) (chr)
## 1 1 ABCD
## 2 1 AS56
## 3 2 RCPZ
## 4 2 AS56
## 5 3 RCET
## 6 3 ABCD
## 7 3 RCPZ
## 8 3 AS56
,因为它可以方便地使用as_data_frame
列而无需额外的工作。
答案 1 :(得分:1)
你可以这样做:
df <- data.frame(
term_id = rep(terms$term_id, lengths(terms$major_cd),
major_cd = unlist(terms$major_cd)
)
term_id major_cd
1 1 ABCD
2 1 AS56
3 2 RCPZ
4 2 AS56
5 3 RCET
6 3 ABCD
7 3 RCPZ
8 3 AS56
答案 2 :(得分:1)
我们可以在设置&#39; major_cd&#39;的名称后使用stack
执行此操作与&#39; term_id&#39;
res <- stack(with(terms, setNames(major_cd, term_id)))[2:1]
res
# ind values
#1 1 ABCD
#2 1 AS56
#3 2 RCPZ
#4 2 AS56
#5 3 RCET
#6 3 ABCD
#7 3 RCPZ
#8 3 AS56
如果需要,我们可以更改列名
colnames(res) <- names(terms)
注意:不使用其他包。