【问题标题】:Apply/lapply function to all columns in matrix将/lapply 函数应用于矩阵中的所有列
【发布时间】:2021-09-13 18:05:03
【问题描述】:

我有一个名为 seq$num 的矩阵,由 100 列和 30k 行组成。每列对应一个特定样本的名称(例如 CAGTCA),每一行都是一个数值。使用这种类型的对象,我可以访问第一行写入 seq$num[[1]] 等其他行。这是我的数据库的一个简短示例:

CAGTCA AGATCA GCTCGA GCTCGA
-0.4930 -2.0330 0.7100 0.1560
1.0030 0.0120 -1.0433 0.6701
0.0013 1.0013 1.2451 -1.3421

我想使用 lapply 函数遍历所有样本并对每个样本进行分类:

  • 1.5 以上的数字为“高”。
  • 低于 0 的数字为“低”。
  • 0 到 1.5 之间的数字为“中”。

那么我还需要注意有多少高、低和中等数字有样本。

如何做到这一点?我尝试应用 lapply 函数,但没有得到我想要的输出。

【问题讨论】:

标签: r loops matrix apply lapply


【解决方案1】:

您可以编写一个将数据分类的函数。

classify <- function(x) ifelse(x >= 1.5, 'high', ifelse(x < 0, 'low', 'medium'))

对于seq$num 中的每个数据帧,对其应用classify 函数并使用table 进行计数。

res <- lapply(seq$num, function(x) table(classify(as.matrix(x))))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2016-02-20
    相关资源
    最近更新 更多