【问题标题】:How to add Double quotes and comma to a column in R dataframe?如何在 R 数据框中的列中添加双引号和逗号?
【发布时间】:2018-11-14 02:28:47
【问题描述】:

我有一个单列数据框。我希望列中的所有值都用双引号和逗号括起来,如下所示。

df <- data.frame("SN" = 1:4, "Name" = c("John", "Dora","Peter","Lilly"), stringsAsFactors = FALSE)

df$Name 

当我提取名称列时,我希望它df$Name

"John",
"Dora",
"Peter",
"Lilly"

我尝试了pastegsubshQuote,但它没有给我想要的结果。任何帮助表示赞赏。

【问题讨论】:

    标签: r dataframe paste gsub double-quotes


    【解决方案1】:
    data.frame(
      SN = 1:4,
      Name = c("John", "Dora", "Peter", "Lilly"),
      stringsAsFactors = FALSE
    ) -> xdf
    

    sprintf():

    sprintf('"%s",', xdf$Name)
    ## [1] "\"John\","  "\"Dora\","  "\"Peter\"," "\"Lilly\","
    
    cat(sprintf('"%s",', xdf$Name), sep="\n")
    ## "John",
    ## "Dora",
    ## "Peter",
    ## "Lilly",
    

    paste():

    paste('"', xdf$Name, '",', sep = "")
    ## [1] "\"John\","  "\"Dora\","  "\"Peter\"," "\"Lilly\","
    
    cat(paste('"', xdf$Name, '",', sep = ""), sep="\n")
    ## "John",
    ## "Dora",
    ## "Peter",
    ## "Lilly",
    

    sub():

    sub("$", '",', sub("^", '"', xdf$Name))
    ## [1] "\"John\","  "\"Dora\","  "\"Peter\"," "\"Lilly\","
    
    cat(sub("$", '",', sub("^", '"', xdf$Name)), sep="\n")
    ## "John",
    ## "Dora",
    ## "Peter",
    ## "Lilly",
    

    FWIW sprintf() 获胜:

    microbenchmark::microbenchmark(
      sprintf = sprintf('"%s",', xdf$Name),
      paste = paste('"', xdf$Name, '",', sep = ""),
      sub = sub("$", '",', sub("^", '"', xdf$Name))
    )
    ## Unit: microseconds
    ##     expr    min      lq     mean  median      uq     max neval
    ##  sprintf 11.705 13.4955 25.91594 19.6095 32.1780 170.989   100
    ##    paste 13.133 15.3150 34.31982 19.0455 31.9615 340.482   100
    ##      sub 31.271 34.8555 64.41124 39.8840 78.0180 533.065   100
    

    更新

    我觉得你的目标是:

    paste0(sprintf('"%s"', xdf$Name), collapse = ", ")
    ## [1] "\"John\", \"Dora\", \"Peter\", \"Lilly\""
    
    cat(paste0(sprintf('"%s"', xdf$Name), collapse = ", "))
    ## "John", "Dora", "Peter", "Lilly"
    

    【讨论】:

    • 非常感谢。如果我必须从 Name 列的最后一个值中删除逗号,我该怎么做?
    • 我认为您手头有一项实际任务。请将所有您的要求和最终期望的输出添加到实际问题中,而不是零碎地解决,但请检查更新。
    • 您发布的更新为我提供了值而不是具有单列的数据框。当我使用 as.data.frame 时,它​​是一个空列表
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2022-01-19
    • 2015-09-24
    • 2019-08-19
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多