r - 如何在 R 中交换列表元素的名称和值?

标签 r list

我有一个 list :

l <- list(1:3, 4:6)
names(l[[1]]) <- c("A1","B1","C1")
names(l[[2]]) <- c("A2","B2","C2")
l

[[1]]  
A1 B1 C1   
 1  2  3 

[[2]]  
A2 B2 C2   
 4  5  6  

我想切换列表元素的值和名称,因此输出如下:

[[1]]  
1 2 3  
A1 B2 C3  

[[2]]  
4 5 6  
A2 B2 C2  

在我的真实列表中,我有 200 多个子列表,每个子列表有 100 多个元素。 R中有什么有效的方法可以实现这一点吗?

提前谢谢您。

最佳答案

使用 lapply()setNames()基本解决方案。

lapply(l, function(x) setNames(names(x), x))

或者您可以将 enframe()tibble 中的 deframe() 一起使用。

library(tibble)
lapply(l, function(x) deframe(enframe(x)[2:1]))

两人都给了

# [[1]]
#    1    2    3 
# "A1" "B1" "C1" 
# 
# [[2]]
#    4    5    6 
# "A2" "B2" "C2"

关于r - 如何在 R 中交换列表元素的名称和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63491058/

相关文章:

r - 当列名是数字时 dplyr 选择列

r - 将每个值交换为不同的值

r - 为什么在Rmarkdown::render中docx和html之间的绘图大小不同?

python - 在列表组件列表中明智地添加或减去元素

python - 如何覆盖 list[1 :10]? 中的 [] 运算符

r - R中二进制变量的图形

r - 如何在每一行中使用grepl?

python - 改变一个扭曲的列表 : whats going on behind the scenes

python - Python 中列表的状态信息和不变性

java - 创建实例时指定集合元素类型