【问题标题】:Rename one specific row of a matrix (R)重命名矩阵的一个特定行 (R)
【发布时间】:2016-08-19 14:52:19
【问题描述】:

我找不到这个非常基本的问题的答案。我只想重命名矩阵的一个特定行。用数据框很容易做,怎么用矩阵做呢?当然,可以来回转换,不是重点。

这在尝试将函数 quantilemean 的输出组合到一个矩阵时浮出水面。

DF <- structure(list(FwdD1 = c(2.2, 2.8, 0.7, 1.1, -0.9, 2.5), FwdD2 = c(2.6,2.2, 2, -1.4, 2.8, 4), FwdD3 = c(1.2, 1.7, 9, -1.6, 1.7, 1.1),FwdD4 = c(1.6, 1.9, 5.4, 1.2, 1.4, 0.8), FwdD5 = c(4.7, 3,4.8, -1.2, 0, 0.2)), .Names = c("FwdD1", "FwdD2", "FwdD3","FwdD4", "FwdD5"), row.names = c("10007", "57926", "95462", "142373","181339", "229476"), class = "data.frame")

Quantiles <- round(apply(DF, 2, quantile, na.rm=TRUE),2)
Mean <- round(apply(DF, 2, mean, na.rm=TRUE),2)
Mean <- as.matrix(Mean,drop=FALSE)
QuantilesMean <- rbind(Quantiles,t(Mean))
rownames(QuantilesMean) <- c("0%","25%","50%","75%","100%","Mean")


#Output of QuantilesMean matrix:
     FwdD1 FwdD2 FwdD3 FwdD4 FwdD5
0%   -0.90 -1.40 -1.60  0.80 -1.20
25%   0.80  2.05  1.12  1.25  0.05
50%   1.65  2.40  1.45  1.50  1.60
75%   2.42  2.75  1.70  1.82  4.28
100%  2.80  4.00  9.00  5.40  4.80
Mean  1.40  2.03  2.18  2.05  1.92

工作正常,但如果我有数百行,那就不切实际了。谢谢。

【问题讨论】:

    标签: r matrix rename


    【解决方案1】:

    (对于标题中的问题,请参阅@AdamQuek 的回答。)

    对于您的特定应用,请尝试:

    res = sapply(DF, function(x) c(quantile(x), Mean = mean(x)))
    

    如果浏览时需要四舍五入:

    round(res, 2)
    
         FwdD1 FwdD2 FwdD3 FwdD4 FwdD5
    0%   -0.90 -1.40 -1.60  0.80 -1.20
    25%   0.80  2.05  1.12  1.25  0.05
    50%   1.65  2.40  1.45  1.50  1.60
    75%   2.42  2.75  1.70  1.82  4.28
    100%  2.80  4.00  9.00  5.40  4.80
    Mean  1.40  2.03  2.18  2.05  1.92
    

    【讨论】:

      【解决方案2】:

      通过索引的简单方法。

      rownames(QuantilesMean)[6]<-"Mean"
      

      【讨论】:

        猜你喜欢
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-27
        相关资源
        最近更新 更多