首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dataframe的paste方法

dataframe的paste方法
EN

Stack Overflow用户
提问于 2011-11-03 05:45:49
回答 2查看 9.6K关注 0票数 10

我希望将数据帧输入到paste中,并且希望paste将其视为已单独输入该数据帧的列。我想这样做的原因是我不确定我的数据帧将有多少列。这里有2列,但我想要一个通用的解决方案来处理任意数量的列。

在下面的代码中,我想要的输出是test1paste。但我希望不必显式地引用这些列。我的apply尝试失败了,这是可以理解的,因为它单独作用于列,但是我认为它得到了我正在寻找的解决方案。

代码语言:javascript
运行
复制
> 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"

有什么想法吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-03 05:55:22

这样如何:

代码语言:javascript
运行
复制
> 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"
票数 8
EN

Stack Overflow用户

发布于 2011-11-03 06:32:43

如果您的"dataframe“实际上是一个data.frame (而不是示例中的matrix ),则可以直接使用do.call

代码语言:javascript
运行
复制
testdf <- as.data.frame(test1)
do.call(paste, c(testdf, sep="&"))

这依赖于这样一个事实,即data.frame是一个美化的list,并且do.call接受一系列参数。我只需将sep参数附加到列表...

但需要注意的是:如果有任何列名为"sep“或”name“,您可能会遇到麻烦。在这种情况下,删除列名将有所帮助:

代码语言:javascript
运行
复制
do.call(paste, c(unname(testdf), sep="&"))
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7987698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档