我在R中有一个名为RUNS的列表,RUNS的每个元素都是由数字数据组成的矩阵。由于分母舍入为零,因此用于生成矩阵的计算之一返回“Inf”作为值。这导致了我现在正在做的一些工作中的问题,并且我试图找出一种方法来简单地删除在其中具有“Inf”的RUNS的元素。我没有得到它的工作。我想:从R列表中删除元素
TEST <- subset(RUNS, "Inf" %nin% RUNS)
从Hmisc包%命令使用%,但它似乎并没有做什么,我需要。任何想法将不胜感激。谢谢。
我在R中有一个名为RUNS的列表,RUNS的每个元素都是由数字数据组成的矩阵。由于分母舍入为零,因此用于生成矩阵的计算之一返回“Inf”作为值。这导致了我现在正在做的一些工作中的问题,并且我试图找出一种方法来简单地删除在其中具有“Inf”的RUNS的元素。我没有得到它的工作。我想:从R列表中删除元素
TEST <- subset(RUNS, "Inf" %nin% RUNS)
从Hmisc包%命令使用%,但它似乎并没有做什么,我需要。任何想法将不胜感激。谢谢。
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
完美工作。非常感谢。 – user2900280
试试这个:
# 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)]
只适用于载体 –
尝试
TEST = lapply(RUNS, function(x) subset(x, is.finite(x))
感谢您的帮助。不知道为什么,但我仍然不断为'is.finite类型'列表'实现'方法。 – user2900280
RUNS是列表的列表吗? –
说明你需要什么,后dput(运行),并澄清之所以选择子句中使用相同的名称data.frame/matrix的名称。你有这个名字的专栏吗? (答案可能只是'RUNS [is.finite(RUNS)]') –
我现在无法获得dput(RUNS),因为我有一个很长的进程在运行,但是这会模拟它。 (c(rep(1,3),rep(2,...,n3) 3)),nrow = 3) c < - 矩阵(c(rep(1,3),rep(3,3)),nrow = 3) RUNS < - list(a,b,c) (c(rep(1,3),rep(2,3)),nrow = 3)给出的列表。 rep(3,3)),nrow = 3) RUNS < - list(b,c) – user2900280