从连接的值创建新的矩阵列

  • 本文关键字:阵列 连接 创建 r
  • 更新时间 :
  • 英文 :


我有一个矩阵,矩阵中的列包含0和1,我想将每行中的值连接起来,用连接的字符串在矩阵中创建一个新列。

我使用

apply(format(matrix), 1, paste, collapse="") 

来自在R中连接N列文本创建一个串联值的列表,但我很难将这些值放入矩阵中的新列中——这段代码的第二行语法错误。

我当前的代码:

newcolumn <- rep(0,times=nrow(matrix))
newcolumn[matrix[apply(format(matrix), 1, paste, collapse="")]]
matrix <- cbind(matrix, newcolumn)
  1. 您需要阅读R的基本介绍(请参阅标签wiki中的链接)

目前,您已经将0的向量创建为newcolumn。您的第二行代码是垃圾(正如您正确指出的)——请参阅第1点。

您可以cbind apply(format(matrix), 1, paste, collapse="")matrix的结果。不需要预先分配newcolumn

请注意,matrix只能容纳单一类型的数据(即数字或字符等),因此,如果包含character列,则整个矩阵将强制为字符。

# examples
# a character matrix containing the result + matrix coerced to character
charResults <- cbind(matrix, apply(format(matrix), 1, paste, collapse="") )

# you could use a data.frame to have different data classes in the same structure
dfResults <- cbind(as.data.frame(matrix), result = apply(format(matrix), 1, paste, collapse=""))

另外请注意,通常最好不要将对象命名为baseR函数(如matrix

的名称

cbind(matrix, paste0(as.character(matrix[,1]), as.character(matrix[,2])))应该能做到这一点。矩阵必须转换为字符格式,以适应"01"的情况。

假设您有一个矩阵a,如下所示
A = [[1,2,3,4,5,6],
[11,12,13,14,15,16],
[21,22,23,24,25,26],
[31,32,33,34,35,36],
[41,42,43,44,45,46]]

您希望将1、2、3列与6.最后一列连接起来,以构建新矩阵,如下所示;NewA =
[[1, 2, 3, 6],
[11,12,13,16],
[21,22,23,26],
[31,32,33,36],
[41,42,43,46]]

我找到了实现它的最简单的解决方案:;

import numpy as np
NewA=np.concatenate((np.transpose(A)[0:3],np.transpose(A)[5:6])).transpose()

我希望它对你有帮助。。。

最新更新