【问题标题】:Pasting a string matrix row-wise with a string vector使用字符串向量逐行粘贴字符串矩阵
【发布时间】:2016-06-24 01:20:54
【问题描述】:

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

功能:

for (i in 1:nrow(X1))
  tableRow = matrix(c(tableRow,paste(tableRow[i],letters$Letters[i],sep = "")),nrow = 1)

在哪里: X1 是我的汇总表,tableRowX1 的第一行,并且 letters 包含我要连接的字母。

返回:

[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"

期望的输出:

[1,]  "5.53 ± 0.77a" "6.72 ± 1.18a" "5.12 ± 0.44a" "5.24 ± 0.41a"

【问题讨论】:

  • 可以根据需要添加数据。不想混淆问题!
  • @ZheyuanLi 不,很多列,但我想我会先尝试解决第一行。
  • 一个好主意,但没有雪茄。 :) 我正在逐行创建矩阵,因为不同的列必须与不同的字母连接。您的建议不仅在所有行中添加了一个字母,而且原始未连接数据的讨厌的第一行仍然存在!
  • 好的,我会玩一玩,看看我想出了什么。很快就会回复你。谢谢。

标签: r for-loop matrix paste


【解决方案1】:

这将完成所有工作:

## 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"

对于您的数据,您可以:

matrix(paste0(X1, letters$Letters), nrow = nrow(X1))

备注1

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

备注2

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

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()就可以了:

#      [,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"

【讨论】:

  • 成功了!!惊人的!!非常感谢。 :) 为了与问题保持一致,我的最后一行如下所示:for (i in 1:nrow(X1)) tableRow = matrix(paste0(X1[,2],letters$Letters[i]),nrow=1)
  • 你是对的,谢谢。这可能是因为为达到这一点而采取的所有步骤。我想如果我把所有的东西都贴上去,那将是一团糟。但我也认为 for 循环可能会导致问题,有人可能会注意到这一点。
猜你喜欢
  • 2020-01-07
  • 2013-11-16
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
相关资源
最近更新 更多