从R中的列表中删除特定类的元素

use*_*199 3 r list removeclass

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

比如说我有清单

tempList <- list(2,4,'a', 7, 'f')
Run Code Online (Sandbox Code Playgroud)

如何删除所有字符条目只留下2,4和7的列表.

提前致谢

Rom*_*rik 7

尝试

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

[[2]]
[1] 4

[[3]]
[1] 7
Run Code Online (Sandbox Code Playgroud)

请注意,这是等效的.

tempList[sapply(tempList, function(x) class(x) != "character")]
Run Code Online (Sandbox Code Playgroud)

如果你需要经常使用它,你可以把它变成一个函数.

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

tempList[classlist(tempList) != "character"]
Run Code Online (Sandbox Code Playgroud)

要么

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

classlist2(tempList)
Run Code Online (Sandbox Code Playgroud)

  • 即将发布. (2认同)