【发布时间】:2020-12-14 01:41:45
【问题描述】:
我是编写循环的新手,我一直在努力解决这个问题。
我有一个数据框,其中需要单独对每一列应用唯一阈值。如果该值高于阈值,则保留原始值。如果低于,则转换为 0。
这只是一个精简的数据框Data.t 作为示例。
Peptide.1 Peptide.2 Peptide.3
MF.001 -0.01 0.04 0.04
MF.006 0.02 0.05 -0.02
MF.007 0.03 0.05 0.06
MF.015 0.00 0.04 0.05
QEM.219 -0.02 0.02 0.01
QEM.234 0.41 0.15 0.02
QEM.277 -0.04 0.00 0.03
QEM.409 0.00 0.00 0.00
这是单独的阈值作为单独的数据框threshold。
V1 V2 V3
threshold 0.236 0.172 0.176
我已经使用 ifelse 函数弄清楚了第一部分。
Data.n$Peptide.1 <- ifelse(Data.t$Peptide.1 > threshold$V1, Data.t$Peptide.1, 0)
这会给我:
Peptide.1
MF.001 0.00
MF.006 0.00
MF.007 0.00
MF.015 0.00
QEM.219 0.00
QEM.234 0.41
QEM.277 0.00
QEM.409 0.00
但是现在,我想将各个阈值应用于所有列,即threshold$V2 到Data.t$Peptide.2 等等。我知道我可以单独执行此操作,但我总共有 84 列。将来我还会有更多这样的数据帧,所以我认为编写一个循环会有所帮助。
我能得到一些帮助吗?
我确信这是一件超级简单的事情,但我尝试编写许多不同的 for 循环,但都失败了。
非常感谢!
【问题讨论】:
标签: r loops for-loop if-statement