从整个数据框中删除一个字符

Anu*_*hit 9 r dataframe

我有一个包含各种列的数据框,某些列中的某些数据包含双引号,我想删除它们,例如:

ID    name   value1     value2
"1     x     a,"b,"c     x"
"2     y     d,"r"       z"
Run Code Online (Sandbox Code Playgroud)

我希望这看起来像这样:

ID    name   value1    value2
1     x      a,b,c      x
2     y      d,r        z
Run Code Online (Sandbox Code Playgroud)

akr*_*run 16

我会使用lapply循环列,然后替换"使用gsub.

df1[] <- lapply(df1, gsub, pattern='"', replacement='')
df1
#  ID name value1 value2
#1  1    x  a,b,c      x
#2  2    y    d,r      z
Run Code Online (Sandbox Code Playgroud)

如果需要class可以改变type.convert

df1[] <- lapply(df1, type.convert)
Run Code Online (Sandbox Code Playgroud)

数据

df1 <-  structure(list(ID = c("\"1", "\"2"), name = c("x", "y"),
value1 = c("a,\"b,\"c", 
"d,\"r\""), value2 = c("x\"", "z\"")), .Names = c("ID", "name", 
"value1", "value2"), class = "data.frame", row.names = c(NA, -2L))
Run Code Online (Sandbox Code Playgroud)

  • +1使用方括号(`df [] <-`)进行赋值,将`lapply`的返回列表强制转换为数据帧.我从来不知道那个把戏. (5认同)
  • @drammock谢谢,只要我们想要为替换值返回旧数据集的结构,就可以使用`[]`. (3认同)
  • @ zsad512因为您的数据不同而拒绝有效的答案是不好的。首先,您需要了解元字符(即$)和非元字符之间的区别。只看一个答案,然后抱怨说它不起作用,然后再投票是绝对不公平的。 (2认同)