【问题标题】:In a list of data frames, calculate proportion of these that meets a condition在数据框列表中,计算满足条件的数据框的比例
【发布时间】:2020-05-16 11:52:48
【问题描述】:

我有一个数据框列表 (gtf),我想计算每个数据框在一组坐标 [i,j] 处有 0 的比例(坐标 [i,j] == 0)。即,如果我有 500 个数据帧,其中 120 个在坐标 [1,1] 处为 0,则该函数将返回 120/500。

最终,我希望我的函数返回一个数据框,其中列对应于 gtf 的列,并且值是相应坐标中具有 0 的数据框的比例。这是gtf的娱乐:

x = matrix(c(1,0), 6,6)
x = as.data.frame(x)
y = matrix(c(0,1), 6,6)
y = as.data.frame(x)
gtf = list(x,y,x,y)

这是我尝试过的:

for (i in seq_along(gtf)) 
    for (j in seq_along(gtf[[i]])) 
        if (gtf[[i]][1,j] == 0) tf[[i]] <- TRUE

【问题讨论】:

    标签: r loops indexing bioinformatics


    【解决方案1】:

    我们使用==list 元素转换为逻辑矩阵,Reduce 通过添加相应的'i,j' 元素并除以listlength 将其转换为单个数据集

    Reduce(`+`, lapply(gtf, `==`, 0))/length(gtf)
    

    【讨论】:

    • 我真的需要更彻底地学习这些reduceapply 函数。有没有可以推荐的教程?
    • @eabrown2378 这个链接可能对apply有帮助
    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多