代码之家  ›  专栏  ›  技术社区  ›  klamsi

删除数据帧中因子的双引号

  •  -1
  • klamsi  · 技术社区  · 6 年前

    我得到了一个数据框架,其中有一堆变量作为引号中的因子,比如 ""x1"" .

    str(df) 给了我这样的信息:

    $ x : Factor w/ 10 Levels "\"\"x1\"\"",..: 1 7 9 ...
    

    我试着用 gsub() 但那不起作用。可能是因为我不知道插入什么作为模式?如果有人能解决这个难题,也许能向我解释 "\"\"x1\"\""

    数据帧的示例如下所示:

    structure(list(Sent = structure(c(2L, 2L, 2L, 2L, 2L), .Label = c("\"\"Opted out\"\"", 
    "\"\"Yes\"\""), class = "factor"), Responded = structure(c(2L, 
    2L, 2L, 2L, 2L), .Label = c("\"\"Complete\"\"", "\"\"No\"\"", 
    "\"\"Partial\"\""), class = "factor")), row.names = c(NA, -5L
    ), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sent", 
    "Responded"))
    

    提前谢谢!

    1 回复  |  直到 6 年前
        1
  •  5
  •   Andre Elrico    6 年前
    vec = c('""x1""', '""x2""', '""x3""')
    vec =  factor(vec)
    
    levels(vec) <- gsub('["\\]', "", levels(vec))
    
    #> vec
    #[1] x1 x2 x3
    #Levels: x1 x2 x3
    

    • 看看我会怎么用 ' 作为包装,当我想用的时候 " 在一根绳子里面。

    • 1, 2, 3,... 数字。

    由于您现在提供了数据,您可以使用:( df1

    df1[] <- lapply(df1, function(vec){ levels(vec) <- gsub('["\\]',"",levels(vec)); vec})