【问题标题】:How can i build a for function for matrix?如何为矩阵构建 for 函数?
【发布时间】:2014-12-30 09:22:44
【问题描述】:

现在我有一个如下列表:

mylist
[[1]]
[1] 0 1 0 1 1 0 0 1 0

[[2]]
[1] 0 1 0 1 0 1 0 1 1
...

我想通过一个 for 循环函数将每个列表变成一个 3*3 矩阵,例如:

for (i in 1:N){
m[i]=matrix(mylist[[i]],nrow=3,ncol=3,byrow=TRUE)

}

但没有成功?

我还能做什么?

感谢您提前提供帮助!

【问题讨论】:

  • 嗨。欢迎来到 Stackoverflow。来自 R tag-wiki,R 是一种免费的开源编程语言和软件环境,用于统计计算、生物信息学和图形学。请用最小的可重复示例补充您的问题。对于统计问题,请使用stats.stackexchange.com 此外,请务必使用take the SO tour 并至少浏览the SO help pages
  • 您还应该更仔细地阅读错误消息并发布完整的错误消息,而不是写“不起作用”。当您尝试在 LHS 和被索引的对象上分配索引时不存在,你得到一个错误。

标签: r for-loop matrix


【解决方案1】:

您不需要for 循环。你可以使用lapply:

## First, make up some sample data
set.seed(1)
mylist <- replicate(2, sample(0:1, 9, TRUE), FALSE)

## Let's work on a copy in case you need the original
m <- mylist 
m
# [[1]]
# [1] 0 0 1 1 0 1 1 1 1
# 
# [[2]]
# [1] 0 0 0 1 0 1 0 1 1

## Here's the actual transformation
m[] <- lapply(m, matrix, nrow = 3, byrow = TRUE)
m
# [[1]]
#      [,1] [,2] [,3]
# [1,]    0    0    1
# [2,]    1    0    1
# [3,]    1    1    1
# 
# [[2]]
#      [,1] [,2] [,3]
# [1,]    0    0    0
# [2,]    1    0    1
# [3,]    0    1    1

【讨论】:

    【解决方案2】:
    m=list()
    for (i in 1:length(mylist) ){
    m[[i]] = matrix( mylist[[i]], nrow=3, ncol=3, byrow=TRUE)
    }
    
    > m
    [[1]]
         [,1] [,2] [,3]
    [1,]    0    0    1
    [2,]    1    0    1
    [3,]    1    1    1
    
    [[2]]
         [,1] [,2] [,3]
    [1,]    0    0    0
    [2,]    1    0    1
    [3,]    0    1    1
    

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2015-12-02
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多