【问题标题】:Remove quotes ("") from a data.frame in R从 R 中的 data.frame 中删除引号 ("")
【发布时间】:2014-01-24 16:54:15
【问题描述】:

我有一个包含几列的 data.frame,它们都是字符类。所有值都用双引号括起来,我想删除这些引号。

例子

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

【问题讨论】:

  • 你确定你有data.frame而不是matrix吗?
  • 如果您只想删除引号,请查看noquote 函数。
  • 如果我忽略它,我没有读取完整文件并收到警告消息:In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : EOF在带引号的字符串内
  • 数据框包含数字和字符。我想分析文件运行一些报告

标签: r


【解决方案1】:

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

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

另见?print.data.frame(=帮助)

编辑:

关于下面评论中的dputed 数据:

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

【讨论】:

  • df <- data.frame(df=c("1203", "2304"), df2=c("Name1", "Name2"), stringsAsFactors=FALSE); print(df, quote=FALSE); print(df, quote=TRUE) 工作正常。
  • 使用dput() 发布您的数据框,以便人们对其进行检查。
  • 结构(列表(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")
  • 在您的情况下,引号是字符向量/字符串本身的一部分。 print(as.data.frame(sapply(df, function(x) gsub("\"", "", x)))) 已删除并打印出来。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 2022-01-22
    • 2020-10-08
    • 2011-07-10
    • 2015-03-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多