【问题标题】:Transform 4 column matrix to a single 1 column matrix in R将 4 列矩阵转换为 R 中的单个 1 列矩阵
【发布时间】:2013-08-29 12:17:33
【问题描述】:

我正在尝试将具有 4 列的矩阵转换为具有 1 列的矩阵,如示例:

我试过代码,但是值出现在一个列表中,我想要可以做一些操作的值!

f.con <- matrix (c(ex), 
                 ncol=1, byrow=TRUE)

Initial matrix (ex)

0   3   2
0   2   1
0   1   1



Final matrix with 1 colunm:

0
0
0
3
2
1
2
1
1

【问题讨论】:

  • 您应该通过单击左侧的勾号来接受能够解决您的问题的答案之一。在你的其他问题中做同样的事情也会增加你在未来的问题中得到(好的)答案的机会。

标签: r matrix


【解决方案1】:

这里有几种可能性:

dim(m) <- c(length(m), 1)
# or
m <- matrix(m, ncol = 1)

然而,后一种方法速度较慢。

# As I understand, the reason this is fast is that it
# literally transforms the matrix 
m <- matrix(0:1, ncol = 10000, nrow = 10000)
system.time(dim(m) <- c(length(m), 1))
#   user  system elapsed 
#      0       0       0 

m <- matrix(0:1, ncol = 10000, nrow = 10000)
# Whereas here a copy is being made
system.time(m2 <- matrix(m, ncol = 1))
#   user  system elapsed 
#   0.45    0.16    0.61 

# And here a long vector is needed first
system.time(m3 <- as.matrix(c(m)))
Error: cannot allocate vector of size 381.5 Mb

【讨论】:

  • 好的,这是一个简单的例子,如果我用另一个值导入一个大矩阵,比如在 0 的地方使用一个对象!
  • 这出现在一个带有成对值的列表中! [,1] [1,] 整数,2 [2,] 整数,2 [3,] 整数,2 [4,] 整数,2
  • @Forstools,它仍然适用于不同的值和更大的矩阵。但是您应该使用第一种方法,因为它更快。应该没有问题。将dput(ex)dput(f.con) 添加到您的问题中,以便我们了解发生了什么。请注意,您不必将1 更改为其他任何内容。
【解决方案2】:

您不能只使用向量而不是单列矩阵吗?

as.vector( m )
#[1] 0 0 0 3 2 1 2 1 1

我想不出在 R 中可以使用单列矩阵但不能使用相同长度的向量的操作。

【讨论】:

    【解决方案3】:

    另一种选择:

    > mat <- matrix(c(0,0,0,3,2,1,2,1,1), 3) # your matrix
    > as.matrix(c(mat))  # the disired output
          [,1]
     [1,]    0
     [2,]    0
     [3,]    0
     [4,]    3
     [5,]    2
     [6,]    1
     [7,]    2
     [8,]    1
     [9,]    1
    

    请注意,您正在寻找 vec 运算符的实现,它已经在 R 中的函数 c(·)as.vector(·) 下实现,它们都会给出一个向量,如果你真的想要一列矩阵,那么只需写 as.matrix(c(·))as.matrix(as.vector(·)) 这将适用于任何矩阵大小。

    【讨论】:

    • > 我收到此错误:dim(m)
    • @Forstools,请仔细检查您的数据。有几个人正在花时间试图帮助你。我认为他们应该花更多时间回复您的错误消息是不公平的,这显然与所提供的答案无关。此外,当人们在原始虚拟数据上回答您的问题时,我认为更改您的输入数据不是很明智。
    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    相关资源
    最近更新 更多