我有一个data.frames列表,如下所示:
$`42`
Val Replicate Index
26.92 R2 42
26.92 R3 42
28.68 R1 42
28.68 R4 42
$`43`
Val Replicate Index
28.92 R3 43
29.28 R2 43
30.11 R1 43
30.11 R4 43
$`44`
Val Replicate Index
24.67 R3 44
24.70 R2 44
25.70 R1 44
25.70 R4 44
$`45`
Val Replicate Index
30.57 R1 45
30.57 R4 45
32.39 R2 45
32.81 R3 45我想做的是:如果在"Val“列中”R4“中有一个重复的元素,那么它们都将从"Val”列中删除。
例如,在名为data.frame的45中,由于30.57 (R1)等于30.57 (R4),因此将只保留32.39 (R2)和32.81 (R3)。因此,data.frame 45的期望输出是:
$`45`
Val Replicate Index
32.39 R2 45
32.81 R3 45 我试着用:
lapply(mydf, function(x) x[!duplicated(x[c("Val")]), ]) 但不幸的是,它删除了列"Val“中所有重复的元素,而不是与”复制“列中的R4进行比较。
发布于 2017-02-22 13:36:53
如果这只与"R4“值相关,那么
df[!((duplicated(df$Val) | duplicated(df$Val, fromLast=TRUE)) &
df$Val[df$Replicate == "R4"]), ]将保留一些data.frame df的非重复观测以及所有非R4观测。然后,将其放入lapply
mynonDupeList <- lapply(myList,
function(i) i[!((duplicated(df$Val) | duplicated(i$Val, fromLast=TRUE))
& i$Val[i$Replicate == "R4"]), ]))应该能起作用。
https://stackoverflow.com/questions/42392362
复制相似问题