【问题标题】:R : how to Detect Pattern in Matrix By RowR:如何按行检测矩阵中的模式
【发布时间】:2012-04-26 06:11:06
【问题描述】:

我有一个有 4 列的大矩阵,包含归一化值(按列,均值 ~ 0 和标准差 = 1)

我想看看矩阵中是否有模式,如果是,我想按模式对行进行聚类,按模式我的意思是给定行示例中的值

对于第 N 行

如果第 1 列

基本上有 4^4 = 256 种可能的模式(理论上)

R 中有没有办法做到这一点?

提前致谢

辐射

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    是的。 (虽然不同排列的数量只有 24 = 4*3*2。选择一个值后,第二个可能的值只有三个,指定第二个后,只剩下两个排序。)order应用于每一行的函数应该给出所需的 1,2,3,4 排列:

    mtx <- matrix(rnorm(10000), ncol=4)
    res <- apply(mtx, 1, function(x) paste( order(x), collapse=".")  )
    
    > table(res)[1:10]
    > table(res)
    res
    1.2.3.4 1.2.4.3 1.3.2.4 1.3.4.2 1.4.2.3 1.4.3.2 
         98     112      95     120     114     118 
    2.1.3.4 2.1.4.3 2.3.1.4 2.3.4.1 2.4.1.3 2.4.3.1 
        101     114     105     102     104     122 
    3.1.2.4 3.1.4.2 3.2.1.4 3.2.4.1 3.4.1.2 3.4.2.1 
        105      82     107      90      97      86 
    4.1.2.3 4.1.3.2 4.2.1.3 4.2.3.1 4.3.1.2 4.3.2.1 
         99      93     100     108     118     110 
    

    【讨论】:

    • 有可能第1列=第2列,以此类推,所以三个比较中的每一个都有两种可能(>显然不需要考虑),给出4*3*2 *2^3=192 个排列,对吧?还是我只是放了个屁?
    • 当数字在实线上时,除了那些额外可能性的概率测度之外,测度为零。 :-)
    • 对不起一个新手评论,但返回的结果中有一些我没有得到的东西,根据R中的表命令描述,它就像一个聚类方法,所以在假设1.2下返回的数字.3.4 是矩阵中具有这种模式的行数,我的问题是如何在给定的结果中提取给定模式的行?
    • table 的结果是一个矩阵(或者在这种情况下是一个命名向量),其名称可以用作索引:table(res)["1.2.3.4"] 从我的样本中返回 98。
    • DWin,是否可以修改代码以捕获“1.1.1.1”或“1.1.3.4”等模式......意味着不将其限制在24?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 2016-07-25
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多