数据帧的粘贴方法

Xu *_*ang 10 r

我想将一个数据框输入到粘贴中,我想粘贴它,好像我已经分别输入了该数据帧的列.我想这样做的原因是因为我不确定我的数据帧会有多少列.这里有2个,但我想要一个通用的解决方案来处理任意数量的列.

我想要的输出test1paste在以下代码中.但我不想明确地引用这些列.我的apply尝试可以理解失败,因为它单独作用于列,但我认为它跨越了我正在寻找的解决方案.

> test1 <-
+ structure(c(42.71, 41.69, 46.95, 48.85, 45.26, 44.71, 43.71,
+ 42.69, 47.95, 49.85, 46.26, 45.71), .Dim = c(6L, 2L))
>
> test1paste <- paste(test1[,1],test1[,2], sep = "&")
> test1paste
[1] "42.71&43.71" "41.69&42.69" "46.95&47.95" "48.85&49.85" "45.26&46.26"
[6] "44.71&45.71"
>
> apply(test1,MARGIN=2,paste,sep="&")
     [,1]    [,2]
[1,] "42.71" "43.71"
[2,] "41.69" "42.69"
[3,] "46.95" "47.95"
[4,] "48.85" "49.85"
[5,] "45.26" "46.26"
[6,] "44.71" "45.71"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢!

Mat*_*wle 8

这个怎么样 :

> apply(test1,1,paste,collapse="&")
[1] "42.71&43.71" "41.69&42.69" "46.95&47.95" "48.85&49.85" "45.26&46.26"
[6] "44.71&45.71"
Run Code Online (Sandbox Code Playgroud)


Tom*_*mmy 8

如果您的"数据帧"实际上是一个data.frame(而不是matrix示例中的那个),您可以do.call直接使用:

testdf <- as.data.frame(test1)
do.call(paste, c(testdf, sep="&"))
Run Code Online (Sandbox Code Playgroud)

这取决于a data.frame是一个美化的事实list,并且do.call列出了一系列参数.我只是将sep参数附加到列表中......

但需要注意的是:如果任何列名称为"sep"或"collapse",则可能会遇到麻烦.在这种情况下,删除列名称会有所帮助:

do.call(paste, c(unname(testdf), sep="&"))
Run Code Online (Sandbox Code Playgroud)