将矩阵划分为R中的列表时出现奇怪的输出

莎伦

我一直在尝试编写一个函数,该函数接受矩阵(x)和向量(cut.vec)并输出一个列表,其中列表的每个元素都是输入矩阵中某些列的组合。输入向量中的每个元素都是要对矩阵进行分区的索引。然后,我想将每个分区保存到列表中的元素并返回该列表。

到目前为止,这是我得到的:

这是我正在运行的实际功能

make.cut <- function(x, cut.vec){

    ran.once <- 0 #This checks for first run
    out <- list() #This creates the output list
    temp.matrix <- matrix() #For holding data

    for(i in 1:length(cut.vec)){

        for(n in 1:cut.vec[i]){

            if(cut.vec[i]<n){
                #Do nothing
            }else{
                hold <- x[,n]
                if(ran.once != 0){
                    temp.matrix <- cbind(temp.matrix, hold)
                }else{
                    temp.matrix <- hold
                    ran.once <- 1
                }
            }
        }

        out[[i]] <- temp.matrix
        temp.matrix <- matrix()
    }
    return(out)
}

运行此命令时,我会列出一个列表,但只有第一个元素正确。除第一个元素外,每个元素仅包含输入矩阵的一列。

**Example Input**
x<-matrix(c(341, 435, 834, 412, 245, 532.2, 683.4, 204.2, 562.7, 721.5, 149, 356, 112, 253, 211, 53, 92, 61, 84, 69), nrow=4)

x= 341   435   834   412   245
   532.2 683.4 204.2 562.7 721.5
   149   356   112   253   211
   53    92    61    84    69

cut.vec = c(2, 3, 5)

out <- make.cut(x, cut.vec):

a <- out[[1]]
b <- out[[2]]
c <- out[[3]]

**Intended Output**
a= 341   435  
   532.2 683.4 
   149   356   
   53    92    

b= 834  
   204.2
   112  
   61   

c= 412   245
   562.7 721.5
   253   211
   84    69

**Actual Output**
a= 341   435   
   532.2 683.4 
   149   356  
   53    92   

b= 435   
   683.4 
   356   
   92    

c= 834  
   204.2
   112  
   61

我可以从控制台手动执行此操作,一次只能执行一个元素,并且可以使用,但是每次尝试使用make.cut函数执行时,它都会中断。

这是我手动在终端中执行的操作:

cut.vec<-c(3, 5)

a<-x[,1]
b<-x[,2]
c<-x[,3]

temp <- cbind(a,b,c)

out[[1]] <- temp

cut.vec [2]等于5

a<-x[,4]
b<-x[,5]

temp <- cbind(a,b)

out[[2]] <- temp

但是,当我尝试在函数中应用相同的方法时,它就会中断。

斯文·霍恩斯坦

您可以使用以下方法沿向量“切割”矩阵:

示例数据:

mat <- matrix(1:16, nrow = 2)
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
# [1,]    1    3    5    7    9   11   13   15
# [2,]    2    4    6    8   10   12   14   16

cutvec <- c(2,5)

一是削减的列数mat一起cutvec

cuts <- cut(seq(ncol(mat)), c(0, cutvec - 1))

然后,您可以创建带有子集的列表tapply

tapply(seq(ncol(mat)), cuts, function(x) mat[, x, drop = FALSE])

# $`(0,1]`
#      [,1]
# [1,]    1
# [2,]    2
#
# $`(1,4]`
#      [,1] [,2] [,3]
# [1,]    3    5    7
# [2,]    4    6    8

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将矩阵划分为R中的列表时出现奇怪的输出

来自分类Dev

将矩阵划分为块矩阵

来自分类Dev

将月份和日期列转换为R中的相应数字,并将表划分为2个矩阵

来自分类Dev

将边界框/范围划分为R中的几个部分

来自分类Dev

将单元格划分为单列矩阵

来自分类Dev

C# 将矩阵划分为子块

来自分类Dev

在VBscript中,尝试将数组列表中的每个项目拆分为单个数组时,出现类型不匹配错误

来自分类Dev

将两个矩阵的行1划分为行1 ...将行n划分为行n

来自分类Dev

将列表与R中的矩阵行匹配

来自分类Dev

通过查找 /r/n 子字符串将字符串数据划分为列表列表

来自分类Dev

将列表划分为序言中的一点

来自分类Dev

如何将列表划分为相似的平均子集

来自分类Dev

通过指定组ID将列表划分为组

来自分类Dev

通过引用日期将列表划分为子元素

来自分类Dev

如何用逗号将列表划分为标记

来自分类Dev

将字典划分为较小字典的列表

来自分类Dev

tm包:矩阵中而不是R中的列表的findAssocs()输出

来自分类Dev

tm包:矩阵中而不是R中的列表的findAssocs()输出

来自分类Dev

如何将输出存储到矩阵列表中

来自分类Dev

如何使用OpenCV C ++将3D矩阵划分为2D矩阵束

来自分类Dev

使用mat2cell将MxN矩阵划分为1xN大小的M矩阵

来自分类Dev

将稀疏矩阵索引列表转换为R中的矩阵

来自分类Dev

在将列表转换为R中的矩阵时添加重复模式

来自分类Dev

通过向量将矩阵拆分为矩阵列表

来自分类Dev

计算 R 数据框中的列时出现奇怪的结果?

来自分类Dev

R:将纬度和经度划分为网格部分

来自分类Dev

将数值变量转换为数据帧中的虚拟变量时出现意外输出-R

来自分类Dev

根据Python中的长度将系列划分为几列

来自分类Dev

将String格式的日志记录划分为Java中的列

Related 相关文章

  1. 1

    将矩阵划分为R中的列表时出现奇怪的输出

  2. 2

    将矩阵划分为块矩阵

  3. 3

    将月份和日期列转换为R中的相应数字,并将表划分为2个矩阵

  4. 4

    将边界框/范围划分为R中的几个部分

  5. 5

    将单元格划分为单列矩阵

  6. 6

    C# 将矩阵划分为子块

  7. 7

    在VBscript中,尝试将数组列表中的每个项目拆分为单个数组时,出现类型不匹配错误

  8. 8

    将两个矩阵的行1划分为行1 ...将行n划分为行n

  9. 9

    将列表与R中的矩阵行匹配

  10. 10

    通过查找 /r/n 子字符串将字符串数据划分为列表列表

  11. 11

    将列表划分为序言中的一点

  12. 12

    如何将列表划分为相似的平均子集

  13. 13

    通过指定组ID将列表划分为组

  14. 14

    通过引用日期将列表划分为子元素

  15. 15

    如何用逗号将列表划分为标记

  16. 16

    将字典划分为较小字典的列表

  17. 17

    tm包:矩阵中而不是R中的列表的findAssocs()输出

  18. 18

    tm包:矩阵中而不是R中的列表的findAssocs()输出

  19. 19

    如何将输出存储到矩阵列表中

  20. 20

    如何使用OpenCV C ++将3D矩阵划分为2D矩阵束

  21. 21

    使用mat2cell将MxN矩阵划分为1xN大小的M矩阵

  22. 22

    将稀疏矩阵索引列表转换为R中的矩阵

  23. 23

    在将列表转换为R中的矩阵时添加重复模式

  24. 24

    通过向量将矩阵拆分为矩阵列表

  25. 25

    计算 R 数据框中的列时出现奇怪的结果?

  26. 26

    R:将纬度和经度划分为网格部分

  27. 27

    将数值变量转换为数据帧中的虚拟变量时出现意外输出-R

  28. 28

    根据Python中的长度将系列划分为几列

  29. 29

    将String格式的日志记录划分为Java中的列

热门标签

归档