我有如下数据:
---
title: "Radar"
output:
html_document:
---
```{r radarchart, echo=FALSE, fig.cap='two plots', fig.subcap= c('A figure', 'A table'), out.width = '.49\\linewidth', echo = F, fig.align='center'}
library(gridExtra)
library(grid)
score_selected = as.data.frame(t(c(1,3,4,5,1,2,2,1,3,4)))
data <- rbind(rep(5,10) , rep(0,10) , score_selected)
radarchart(data[c(1,10,9,8,7,6,5,4,3,2)], axistype=0, seg = 5, cglwd = 0.5, cex.main = 0.8,
pfcol=rgb(0.2,0.5,0.5,0.5), cglcol="grey",
cglty=1, vlcex=0.8)
grid.newpage()
grid.table(head(mtcars[,1:6]), theme = ttheme_minimal())
```
它有两列,其中包含列表。我想将两列合并为一个列。
首先,我只想保留 extractedNames1 extractedNames2
1
2 synopsys
3
4 somero
5 cbiz medical management professionals, cbiz, cbiz, cbiz, cbiz, cbiz
6
7
8 johnson, johnson, johnson
9 iridium
10 skillsoft, skillsoft, skillsoft skillsoft, skillsoft, skillsoft
值。因此unique
在cbiz medical management professionals
列中将是唯一值,但是extractedNames1
将在cbiz, cbiz, cbiz, cbiz, cbiz
列中折叠为cbiz
。
第二,我想根据条件进行合并。如果extractedNames2
中没有结果,则取extractedNames1
中的unique
值。如果两列都存在结果,则仅保留extractedNames2
中的结果。 (因此,我只想合并两列,但前提是extractedNames1
列中有空白。)
预期输出:
extractedNamesFina
extractedNames1
数据
l
1
2 synopsys
3
4 somero
5 cbiz medical management professions,
6
7
8 Johnson
9 iridium
10 skillsoft
答案 0 :(得分:2)
您可以在map()
中使用purrr
系列。
library(purrr)
df2 <- as.data.frame(matrix(nrow = nrow(df)))
df2[[1]] <- pmap(map(df, map, unique), ~ if(length(.x)) .x else .y)
df2
# V1
# 1
# 2 synopsys
# 3
# 4 somero
# 5 cbiz medical management professionals,
# 6
# 7
# 8 johnson
# 9 iridium
# 10 skillsoft
如果要将列表插入data.frame
中,则需要创建一个与列表相同长度的data.frame
。一种更方便的方法是使用tibble()
,它可以将列表作为输入。
library(tibble)
tibble(new = pmap(map(df, map, unique), ~ if(length(.x)) .x else .y))
# # A tibble: 10 x 1
# new
# <list>
# 1 <chr [0]>
# 2 <chr [1]>
# 3 <chr [0]>
# 4 <chr [1]>
# 5 <chr [1]>
# 6 <chr [0]>
# 7 <chr [0]>
# 8 <chr [1]>
# 9 <chr [1]>
# 10 <chr [1]>
或
as_tibble_col(pmap(map(df, map, unique), ~ if(length(.x)) .x else .y), column_name = "new")
答案 1 :(得分:0)
您可以尝试以下方法:
.vscode
结果:
args