基于条件R使用循环提取行
我知道这个问题已经被问过好几次了,但我似乎无法让这个问题奏效 我有一个如下所示的数据帧:基于条件R使用循环提取行,r,loops,conditional-statements,bioinformatics,R,Loops,Conditional Statements,Bioinformatics,我知道这个问题已经被问过好几次了,但我似乎无法让这个问题奏效 我有一个如下所示的数据帧: Slycopersicum_O_F30 Slycopersicum_O_F31 BGI_novel_G000585 4.085328 3.886572 BGI_novel_G000600 4.085328 3.886572 BGI_novel_G001004
Slycopersicum_O_F30 Slycopersicum_O_F31
BGI_novel_G000585 4.085328 3.886572
BGI_novel_G000600 4.085328 3.886572
BGI_novel_G001004 4.085328 3.886572
BGI_novel_G001146 4.085328 3.886572
BGI_novel_G001147 4.085328 3.886572
BGI_novel_G001673 4.085328 3.886572
共有24列。现在我想提取符合条件的行,也就是
第1:21列的中间值应大于第22:24列的中间值。为此,我编写了以下循环:
for (i in 1:nrow(OpenTable)){
if (median(as.numeric(OpenTable[i,1:21])) >
median(as.numeric(OpenTable[i,22:24]))) {
print(i) -> list
OpenTable[i,1:24] = SLU
}}
因此,print函数工作正常,可以打印所有符合条件的行。然而,最后一行代码只提取了1行(我猜它们在每个循环中都会被更改)
有人能帮我弄清楚如何用符合条件的行填充数据框吗?
我希望我已经正确地陈述了这个问题,如果您需要更多信息,请让我知道。
干杯 我不会用循环来做这件事。从矢量化函数的角度考虑这一点应该更容易。以下是我的做法(如果您共享整个数据框,我将编辑帖子):
库(dplyr)
数据%>%
行()
滤器(
中位数(c_穿过(1:21))>中位数(c_穿过(2:24))
) %>%
解组()
我不会用循环来做这件事。从矢量化函数的角度考虑这一点应该更容易。以下是我的做法(如果您共享整个数据框,我将编辑帖子):
库(dplyr)
数据%>%
行()
滤器(
中位数(c_穿过(1:21))>中位数(c_穿过(2:24))
) %>%
解组()
如果您创建一个空列表:
my_list<-vector(mode = "list", length = (nrow(OpenTable))
for (i in 1:nrow(OpenTable)){
if (median(as.numeric(OpenTable[i,1:21])) >
median(as.numeric(OpenTable[i,22:24]))) {
my_list[[i]]<-i
}
}
myu列表
中位数(如数字(OpenTable[i,22:24])){
我的列表[[i]]如果您创建一个空列表:
my_list<-vector(mode = "list", length = (nrow(OpenTable))
for (i in 1:nrow(OpenTable)){
if (median(as.numeric(OpenTable[i,1:21])) >
median(as.numeric(OpenTable[i,22:24]))) {
my_list[[i]]<-i
}
}
myu列表
中位数(如数字(OpenTable[i,22:24])){
我的清单[[i]]