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

时间:2015-09-30 04:32:51

标签: r dataframe

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

ifstream myfile("paths.txt"); 
    std::map<int, int> mymap;
    int a, b;
    while (myfile.good())
    {
    myfile >> a >> b;
    mymap[a] = b;
    }
    mymap;

我希望看起来像这样:

ID    name   value1     value2
"1     x     a,"b,"c     x"
"2     y     d,"r"       z"

3 个答案:

答案 0 :(得分:12)

我会使用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

如果需要,可以使用class

更改type.convert
df1[] <- lapply(df1, type.convert)

数据

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))

答案 1 :(得分:2)

一种选择是使用apply()gsub()函数删除所有双引号:

df <- data.frame(ID=c("\"1", "\"2"),
                 name=c("x", "y"),
                 value1=c("a,\"b,\"c", "d,\"r\""),
                 value2=c("x\"", "z\""))

df <- data.frame(apply(df, 2, function(x) {
                                  x <- gsub("\"", "", x)
                              })

> df
  ID name value1 value2
1  1    x  a,b,c      x
2  2    y    d,r      z

答案 2 :(得分:0)

要删除$,您必须将\\ $转义。试试:

df [] <-lapply(df,gsub,pattern =“ \\ $”,replacement =“”)