首页 > 解决方案 > 将列表转换为R中的字符

问题描述

我想在 R 中取消列出一个列表,但要在列表的每个元素中将孔文本保留为一个。

ID = c(rep(1,4),rep(2,3),rep(3,2),4,5);ID
VAR = c(rep("A",3),"B",rep("C",2),"D",rep("E",2),"F","G");VAR
D = data.frame(ID,VAR);D
X = aggregate(. ~ ID, unique(D), c)

如果我取消列出 X 列表,我将分别获取每个文本并且我不想要它。我希望此聚合()函数的结果转换为数据框(as.data.frame())但包含相同的元素。不是作为列表而是作为字符。

有什么帮助吗?

标签: rlisttext

解决方案


这是你想要的吗?

library(dplyr)
X %>% 
  mutate(VAR = sapply(VAR, toString))
#   ID  VAR
# 1  1 A, B
# 2  2 C, D
# 3  3    E
# 4  4    F
# 5  5    G

#OR
D %>% 
  group_by(ID) %>% 
  summarise(VAR = paste(unique(VAR), collapse = ','))
#      ID VAR  
#   <dbl> <chr>
# 1     1 A,B  
# 2     2 C,D  
# 3     3 E    
# 4     4 F    
# 5     5 G    

#OR based on comment, remove "," in collapse
D %>% 
  group_by(ID) %>% 
  summarise(VAR = paste(unique(VAR), collapse = ' '))
# # A tibble: 5 x 2
#      ID VAR  
#   <dbl> <chr>
# 1     1 A B  
# 2     2 C D  
# 3     3 E    
# 4     4 F    
# 5     5 G  

推荐阅读