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

在R中:按行连接向量元素,将向量行转换为字符串

r
  •  11
  • gakera  · 技术社区  · 14 年前

    在R中是否有一个“按行”操作将这样的向量中的每一行转换为字符串?

    > d= cbind("Data", c("2", "73"))
    > d
         [,1]   [,2]
    [1,] "Data" "2" 
    [2,] "Data" "73"
    

    我想要的是

         [,1]
    [1,] "Data 2"
    [2,] "Data 73"
    

    有没有一种简单的方法可以按行连接项目?

    3 回复  |  直到 14 年前
        1
  •  23
  •   Joris Meys    14 年前

    是的,有。它被称为“应用”;-)

    apply(d,1,paste,collapse=" ")
    [1] "Data 2"  "Data 73"
    # convert to matrix using as.matrix to get exactly your solution
    

    ?apply ?paste

        2
  •  4
  •   Joshua Ulrich    14 年前

    在短暂的注视之后 ?paste ,很明显 apply 对于给定的示例不需要。不过,如果有几个列的话,那就很方便了。

    > paste(d[,1],d[,2])
    [1] "Data 2"  "Data 73"
    
        3
  •  3
  •   Beginning_Math    9 年前

    不用借助于 ?apply :

    do.call(paste, as.data.frame(d))
    [1] "Data 2"  "Data 73"
    

    在哪里? as.data.frame 用于避免下标。

    编辑:

    do.call 以另一个函数作为第一个参数,以列表作为第二个参数的函数。它通常用于向函数发送参数列表(在我们的例子中,是 d paste() ). 我们将d作为data.frame(列表的一种类型)发送,以实现此技巧。