4

我希望有一种简单的方法可以做到这一点,但搜索后找不到答案。我有一个列表,想删除特定类的元素。

例如说我有清单

tempList <- list(2,4,'a', 7, 'f')

我如何删除所有字符条目以仅留下 2、4 和 7 的列表。

提前致谢

4

2 回答 2

7

尝试

> tempList[!sapply(tempList, function(x) class(x) == "character")]
[[1]]
[1] 2

[[2]]
[1] 4

[[3]]
[1] 7

请注意,这是等效的。

tempList[sapply(tempList, function(x) class(x) != "character")]

如果你需要大量使用它,你可以把它做成一个函数。

classlist <- function(x) {
  sapply(x, class)
}

tempList[classlist(tempList) != "character"]

或者

classlist2 <- function(x) {
  x[!sapply(x, function(m) class(m) == "character")]
}

classlist2(tempList)
于 2013-03-27T12:56:33.943 回答
4
Filter(is.numeric, tempList)

是一种整洁、实用的编写方式。

于 2013-03-27T20:13:19.523 回答