我在R中有一个名为RUNS的列表,RUNS的每个元素都是由数字数据组成的矩阵。用于生成矩阵的计算之一返回“Inf”作为由于分母四舍五入为零的值。这导致我正在做的一些工作出现问题,我正试图找出一种方法来简单地删除在其中任何地方都有“Inf”的RUNS元素。我没有得到它的工作。我在尝试:
TEST <- subset(RUNS, "Inf" %nin% RUNS)
使用Hmisc包中的%in%命令,但它似乎没有做我需要的。任何想法将不胜感激。感谢。
答案 0 :(得分:1)
lapply(RUNS, function(x) all(is.finite(x)))
[[1]]
[1] FALSE
[[2]]
[1] TRUE
[[3]]
[1] TRUE
> RUNS[ sapply(RUNS, function(x) all(is.finite(x))) ]
[[1]]
[,1] [,2]
[1,] 1 2
[2,] 1 2
[3,] 1 2
[[2]]
[,1] [,2]
[1,] 1 3
[2,] 1 3
[3,] 1 3
答案 1 :(得分:0)
试试这个:
# dummy vector with inf values
x <- c(1,2,3,rep(1/0,4),5,7,8)
# drop inf values
x <- x[!is.infinite(x)]
答案 2 :(得分:0)
尝试
TEST = lapply(RUNS, function(x) subset(x, is.finite(x))