首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字符串向量按行粘贴字符串矩阵。

用字符串向量按行粘贴字符串矩阵。
EN

Stack Overflow用户
提问于 2016-06-24 01:20:54
回答 1查看 595关注 0票数 0

我正在尝试将multcompView信函与摘要数据连接到一个矩阵中。我使用一个for loop来运行单独的摘要矩阵单元格,并将它们与它们各自的字母连接起来。我快到了,但我的矩阵输出原始数据和粘贴数据(见下文)。

功能:

代码语言:javascript
复制
for (i in 1:nrow(X1))
  tableRow = matrix(c(tableRow,paste(tableRow[i],letters$Letters[i],sep = "")),nrow = 1)

其中:X1是我的汇总表,tableRowX1的第一行,letters包含我想连接的字母。

返回:

代码语言:javascript
复制
[1,] "5.53 ± 0.77" "6.72 ± 1.18" "5.12 ± 0.44"
 "5.24 ± 0.41" "5.53 ± 0.77a" "6.72 ± 1.18a" "5.12 ± 0.44a" "5.24 ± 0.41a"

期望产出:

代码语言:javascript
复制
[1,]  "5.53 ± 0.77a" "6.72 ± 1.18a" "5.12 ± 0.44a" "5.24 ± 0.41a"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-24 01:51:03

这将完成所有的工作:

代码语言:javascript
复制
## example matrix
set.seed(0); X <- round(matrix(runif(12), nrow = 4, ncol = 3), 2)

#      [,1] [,2] [,3]
# [1,] 0.90 0.91 0.66
# [2,] 0.27 0.20 0.63
# [3,] 0.37 0.90 0.06
# [4,] 0.57 0.94 0.21

matrix(paste0(X, letters[1:4]), nrow = nrow(X))

#      [,1]    [,2]    [,3]   
# [1,] "0.9a"  "0.91a" "0.66a"
# [2,] "0.27b" "0.2b"  "0.63b"
# [3,] "0.37c" "0.9c"  "0.06c"
# [4,] "0.57d" "0.94d" "0.21d"

对于您的数据,您可以:

代码语言:javascript
复制
matrix(paste0(X1, letters$Letters), nrow = nrow(X1))

备注1

我的例子有一些缺陷。您已经将X1作为字符矩阵,而我的示例X是数字的。执行paste0()时,数值0.90变为"0.9" (因为as.character(0.90)给出了"0.9")。对于你的数据,不会有这样的行为。

备注2

哦,我真的找到了避免这种行为的方法。

代码语言:javascript
复制
X <- format(X)

#      [,1]   [,2]   [,3]  
# [1,] "0.90" "0.91" "0.66"
# [2,] "0.27" "0.20" "0.63"
# [3,] "0.37" "0.90" "0.06"
# [4,] "0.57" "0.94" "0.21"

那么做paste0()就可以了:

代码语言:javascript
复制
#      [,1]    [,2]    [,3]   
# [1,] "0.90a" "0.91a" "0.66a"
# [2,] "0.27b" "0.20b" "0.63b"
# [3,] "0.37c" "0.90c" "0.06c"
# [4,] "0.57d" "0.94d" "0.21d"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38004288

复制
相关文章

相似问题

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