首页 > 解决方案 > 单独的行在结果周围生成引号

问题描述

separate_rows"在运算后在结果值周围生成引号 ( )。这是正常行为吗?如何在同一操作中防止它在操作后不显式删除它们?

df <- data.frame(a = c("c_1", "c_2", "c_3", "c_4", "c_5"), 
                 b = c("a (+1)", "b (+2)", "a (+2), c (+5)", "e (+2)", "b (+2), e (+5)")) 

    a              b
1 c_1         a (+1)
2 c_2         b (+2)
3 c_3 a (+2), c (+5)
4 c_4         e (+2)
5 c_5 b (+2), e (+5)

df %>%  tidyr::separate_rows(b, sep = ",", convert = TRUE)
# # A tibble: 7 x 2
#     a     b        
#   <chr> <chr>    
# 1 c_1   "a (+1)" 
# 2 c_2   "b (+2)" 
# 3 c_3   "a (+2)" 
# 4 c_3   " c (+5)"
# 5 c_4   "e (+2)" 
# 6 c_5   "b (+2)" 
# 7 c_5   " e (+5)"

问题不在于将一行拆分为多行。我的尝试中已经显示了它,并且代码可以实现它。

标签: rtidyr

解决方案


那些引号并不像您想象的那样,这正是tidyverse打印的方式 - 试图表明存在空格。见下文:

library(tidyverse)

x1 <- df %>% separate_rows(b, sep = ",", convert = TRUE)
x2 <- as.data.frame(x1)

x1
# # A tibble: 7 x 2
#   a     b        
#   <chr> <chr>    
# 1 c_1   "a (+1)" 
# 2 c_2   "b (+2)" 
# 3 c_3   "a (+2)" 
# 4 c_3   " c (+5)"
# 5 c_4   "e (+2)" 
# 6 c_5   "b (+2)" 
# 7 c_5   " e (+5)"

x2
#     a       b
# 1 c_1  a (+1)
# 2 c_2  b (+2)
# 3 c_3  a (+2)
# 4 c_3  c (+5)
# 5 c_4  e (+2)
# 6 c_5  b (+2)
# 7 c_5  e (+5)

identical(x1$b, x2$b)
# [1] TRUE

推荐阅读