R 将列值粘贴到数据框中

R 将列值粘贴到数据框中,r,R,我试图将行名与所需列中的数据粘贴在一起。我写了下面的代码,但不知怎的找不到正确的方法 所需输出为:“a,1,11”“b,2,22”“c,3,33” 两个要点: 使用apply而不是do.call(粘贴,) 在这种情况下,使用cbind而不是c。 如果您希望使用c,则需要先将行名称强制为列表或列,例如:c(list(rownames(x)),x) 请尝试以下操作: apply(cbind(rownames(x), x[c('f1','f3')]), 1, paste, collapse=",

我试图将行名与所需列中的数据粘贴在一起。我写了下面的代码,但不知怎的找不到正确的方法

所需输出为:
“a,1,11”“b,2,22”“c,3,33”

两个要点:

  • 使用
    apply
    而不是
    do.call(粘贴,)
  • 在这种情况下,使用
    cbind
    而不是
    c
    • 如果您希望使用
      c
      ,则需要先将行名称强制为列表或列,例如:
      c(list(rownames(x)),x)
  • 请尝试以下操作:

     apply(cbind(rownames(x), x[c('f1','f3')]), 1, paste, collapse=",")
    
           a        b        c 
    "a,1,11" "b,2,22" "c,3,33" 
    

    无需
    do.调用
    应用

    paste(rownames(x),x[[1]],x[[3]] , sep=",")
    [1] "a,1,11" "b,2,22" "c,3,33"
    

    您的
    do.call
    指示R将列表
    c(行名(x),x[c('f1','f3'))
    粘贴在一起。但是看看你的清单

    > c(rownames(x), x[c('f1','f3')])
    [[1]]
    [1] "a"
    
    [[2]]
    [1] "b"
    
    [[3]]
    [1] "c"
    
    $f1
    [1] 1 2 3
    
    $f3
    [1] 11 22 33
    
    c
    命令获取每个参数的元素并将它们连接在一起。这将正确地解构
    x[c('f1','f3')]
    但也会以您不希望的方式解构
    rownames(x)
    。遵循标准,
    paste
    然后从每个列表元素中获取一个项目,并使用
    sep=“,”
    将它们修补在一起

    您可以通过将
    rownames(x)
    封装在列表结构中来解决此问题,以便正确地显示参数列表:

    do.call("paste", c(list(rownames(x)), x[c('f1','f3')], sep=","))
    

    如果将列名作为变量传递,如何避免使用apply?Set
    var?如果
    var
    则正好变成
    var。。
    do.call
    apply
    都非常方便。我认为OP中的关键问题是确定使用哪一个我喜欢这个想法,除了
    apply
    会将data.frame强制转换为矩阵。。使用
    do.call(粘贴,…)
    可以避免这种情况。@Arun,是的,然后将强制粘贴到字符串。即使考虑到各种因素,数据也不会丢失
    do.call("paste", c(list(rownames(x)), x[c('f1','f3')], sep=","))