【发布时间】:2018-04-11 08:11:08
【问题描述】:
我想用 NA 替换存储在列表内数据框中的连续重复值,请参见下面的示例:
A = data.frame(matrix(
c(1, 2, 3, 1, 1, 3, 3, 1),
nrow=4,
ncol=2))
B = data.frame(matrix(
c(1, 1, 2, 1, 1, 2, 3, 1),
nrow=4,
ncol=2))
myList <- list(A,B)
给予:
[[1]]
X1 X2
1 1 1
2 2 3
3 3 3
4 1 1
[[2]]
X1 X2
1 1 1
2 1 2
3 2 3
4 1 1
我的目标是
[[1]]
X1 X2
1 1 1
2 2 3
3 3 NA
4 1 1
[[2]]
X1 X2
1 1 1
2 NA 2
3 2 3
4 1 1
我想这对lapply 来说应该是相对简单的,但我根本就没有到达那里..
【问题讨论】:
-
使用duplicated,遍历列表,然后遍历列。
-
lapply(list, function(x){ apply(x, 2, function(y){ return(ifelse(duplicated(y), NA, y)) }) }) -
我刚刚编辑了这个问题,以便在第 4 行中出现来自同一列的值的进一步重复。但是,只能替换连续的值。如果我没记错的话,“重复”对此不起作用。非常感谢您的回复!