【发布时间】:2018-08-10 15:27:17
【问题描述】:
我在存储列表的数据框中有一列。下面是一个例子:
col
1 9
2 8, 8, 8, 5
3 1, 8, 10, 4
4 3, 6, 1, 6
5 9, 9, 10, 4
6 8, 8, 9, 2
7 6, 10, 4, 7
8 6, 1, 5, 9
9 4, 7, 5, 10
10 7, 9, 2, 5
这是我用来生成上述示例的代码:
set.seed(123)
example <- data.frame(matrix(NA_real_, nrow=10, ncol=1))
colnames(example) <- "col"
for(y in 1:10) {
example$col[y] <- list(c(c(sample(1:10,1)),c(sample(1:10,1)),c(sample(1:10,1)),c(sample(1:10,1))))
}
example$col[1] <- list(c(9))
我想从我的数据框的这一列中的所有这些列表中删除所有出现的数字 9,以获得如下内容:
col
1 NA
2 8, 8, 8, 5
3 1, 8, 10, 4
4 3, 6, 1, 6
5 10, 4
6 8, 8, 2
7 6, 10, 4, 7
8 6, 1, 5
9 4, 7, 5, 10
10 7, 2, 5
而不是这个,我目前正在使用example$col <- lapply(example$col, function(x){ x[x != 9] })
col
1 numeric(0)
2 8, 8, 8, 5
3 1, 8, 10, 4
4 3, 6, 1, 6
5 10, 4
6 8, 8, 2
7 6, 10, 4, 7
8 6, 1, 5
9 4, 7, 5, 10
10 7, 2, 5
如何将numeric(0) 替换为NA_real_ 并且仍然能够删除所有9?
【问题讨论】: