如何删除DataFrame中MRT出现在MET左侧的所有行?
筛选排列DataFrame中"MRT"出现在"MET"右侧的记录
我们需要从包含所有8元素唯一排列的DataFrame中,移除所有"MRT"位于"MET"左侧的行,只保留"MRT"在"MET"右侧的记录。以下是具体实现:
完整代码
library(gtools) # 生成所有8元素的唯一排列并转为DataFrame Vector <- c("MRT", "FRU", "MRNT", "FRNU", "MET", "MEU", "FENT", "FENU") All.orders <- permutations(8, 8, Vector, repeats.allowed = FALSE) All.orders <- data.frame(All.orders) # 筛选符合条件的行:仅保留"MRT"位置在"MET"之后的记录 filtered_df <- All.orders[apply(All.orders, 1, function(row) { # 获取两个目标元素的列索引并比较 which(row == "MRT") > which(row == "MET") }), ]
代码说明
apply(All.orders, 1, function(row) {...}):遍历DataFrame的每一行,对每行执行判断逻辑which(row == "MRT")和which(row == "MET"):分别获取当前行中"MRT"和"MET"所在的列位置- 索引值越大代表在越靠右的位置,因此当
which(row == "MRT") > which(row == "MET")时,说明"MRT"在"MET"右侧,该行需要保留
内容的提问来源于stack exchange,提问作者Thom L.
相关产品推荐
相关产品推荐

