繁体   English   中英

从 R 中的 data.frame 中删除引号 ("")

[英]Remove quotes ("") from a data.frame in R

我有一个包含多个列的数据框,所有列都是字符 class。所有值都用双引号引起来,我想删除这些引号。

例子

df1      df2
"1203"   "Name1"
"2304"   "Name2"

数据框的print()方法有一个选项quote= ,您可以将其设置为FALSE

print.data.frame(data.frame(x=c("Hello", "World")), 
                 quote=FALSE)
#       x
# 1 Hello
# 2 World

另请参阅?print.data.frame (= 帮助)

编辑:

关于下面评论中的dput ed 数据:

as.data.frame(sapply(df, function(x) gsub("\"", "", x)))

更新 dplyr 1.0.0

从 dplyr 1.0.0 开始,您可以使用purrr中新的across语法,这使得它对我们许多人来说更具可读性。

df <- structure(list(Col1 = c("\"2515\"", "\"3348\"", "\"3370\""), Col2 = c("\"06/25/2013\"", "\"12/26/2013\"", "\"12/30/2013\"" )), .Names = c("Col1", "Col2"), row.names = c(NA, 3L), class = "data.frame") 

df
    Col1         Col2
1 "2515" "06/25/2013"
2 "3348" "12/26/2013"
3 "3370" "12/30/2013"

df %>% 
  mutate(across(
    everything(),
    ~ map_chr(.x, ~ gsub("\"", "", .x))
  ))

  Col1       Col2
1 2515 06/25/2013
2 3348 12/26/2013
3 3370 12/30/2013

这种across语法的优点是它不仅可读性好而且非常灵活。 您可以使用一系列其他方法来引用列,而不是所有列的everything() ,例如

  • 按名称 ( Col1, Col2 )
  • 按数据类型(例如is.numericis.character
  • 通过其他tidyselect 选择助手(例如starts_with("Col")contains("Col"

LukeA 的回答将我的整个数据框转换为字符,所以我实现了这个修改,它只修改了字符类的列:

character_cols = which(sapply(x, class) == 'character')

for(i in 1:length(character_cols)) {
  a = character_cols[i]
  x[,a] = gsub("\"", "", x[,a])
}     

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM