首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R转换列表:值转换为名称,名称转换为值

R转换列表:值转换为名称,名称转换为值
EN

Stack Overflow用户
提问于 2020-12-01 23:35:13
回答 4查看 21关注 0票数 1

有没有一种方法可以在R中没有循环的情况下将list1转换成list2

代码语言:javascript
复制
list1 <- list(s1=letters[1:4],
              s2=letters[c(1,2,4)],
              s3=letters[c(1,2,5)],
              s4=letters[1:6])
list2 <- list(a=c('s1', 's2', 's3', 's4'),
                b=c('s1', 's2', 's3', 's4'),
                c=c('s1', 's4'),
                d=c('s1', 's2', 's4'),
                e=c('s3', 's4'),
                f=c('s4'))
> list1
$s1
[1] "a" "b" "c" "d"
$s2
[1] "a" "b" "d"
$s3
[1] "a" "b" "e"
$s4
[1] "a" "b" "c" "d" "e" "f"

> list2
$a
[1] "s1" "s2" "s3" "s4"
$b
[1] "s1" "s2" "s3" "s4"
$c
[1] "s1" "s4"
$d
[1] "s1" "s2" "s4"
$e
[1] "s3" "s4"
$f
[1] "s4"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-12-01 23:45:27

您可以通过使用[2:1]更改列顺序来使用stackunstack

代码语言:javascript
复制
unstack(stack(list1)[2:1])
#$a
#[1] "s1" "s2" "s3" "s4"
#
#$b
#[1] "s1" "s2" "s3" "s4"
#
#$c
#[1] "s1" "s4"
#
#$d
#[1] "s1" "s2" "s4"
#
#$e
#[1] "s3" "s4"
#
#$f
#[1] "s4"
票数 3
EN

Stack Overflow用户

发布于 2020-12-01 23:48:01

使用向量和split()

代码语言:javascript
复制
#Code
v1 <- names(sort(unlist(list1)))
v1 <- substring(v1,1,nchar(v1)-1)
v2 <- split(v1,sort(unlist(list1)))

输出:

代码语言:javascript
复制
v2
$a
[1] "s1" "s2" "s3" "s4"

$b
[1] "s1" "s2" "s3" "s4"

$c
[1] "s1" "s4"

$d
[1] "s1" "s2" "s4"

$e
[1] "s3" "s4"

$f
[1] "s4"
票数 1
EN

Stack Overflow用户

发布于 2020-12-01 23:46:04

这可以通过嵌套两个列表操作来完成,即lapply()purrr::map()purrr::map_lgl()在这里特别有用,可以使代码更简单一些。

代码语言:javascript
复制
library(purrr)
res <-
  map(letters[1:6], function(x)
      names(list1)[map_lgl(list1, function(y)
         any(y %in% x))])
names(res) <- letters[1:6]
res
#> $a
#> [1] "s1" "s2" "s3" "s4"
#> 
#> $b
#> [1] "s1" "s2" "s3" "s4"
#> 
#> $c
#> [1] "s1" "s4"
#> 
#> $d
#> [1] "s1" "s2" "s4"
#> 
#> $e
#> [1] "s3" "s4"
#> 
#> $f
#> [1] "s4"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65093556

复制
相关文章

相似问题

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