检查每个单元格中矩阵中的非零值,然后应用从非零值单元格到R中最后一个单元格的函数

时间:2019-08-19 09:53:37

标签: r loops matrix apply

我在R中有一个矩阵,看起来像这样: 0 0 1个 0 2 0 4

    #Create Matrix
    value <- c(0,0,1,0,2,0,4)
    dff = matrix(value)
    #Calculate Mean 
    mean(dff[,1])

给出1作为答案,但我希望平均值为1 + 0 + 2 + 0 + 4/5 = 7/5 = 1.4 因此,从本质上讲,我希望算法找到第一个非零值(在这种情况下为1),并将其用作系列(1,0,2,0,4)的起点。

这里的查询-Apply function to each cell of matrix in R-与我希望执行的查询类似,但是我似乎无法将其应用于此上下文。任何帮助,将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以将矩阵转换为向量,获取第一个非零值的索引,子集,然后取mean

temp <- c(dff)
mean(temp[which.max(temp != 0) : length(temp)])
#[1] 1.4