2013-11-01 168 views
-1

我在R中有一個名爲RUNS的列表,RUNS的每個元素都是由數字數據組成的矩陣。由於分母舍入爲零,因此用於生成矩陣的計算之一返回「Inf」作爲值。這導致了我現在正在做的一些工作中的問題,並且我試圖找出一種方法來簡單地刪除在其中具有「Inf」的RUNS的元素。我沒有得到它的工作。我想:從R列表中刪除元素

TEST <- subset(RUNS, "Inf" %nin% RUNS) 

從Hmisc包%命令使用%,但它似乎並沒有做什麼,我需要。任何想法將不勝感激。謝謝。

+0

說明你需要什麼,後dput(運行),並澄清之所以選擇子句中使用相同的名稱data.frame/matrix的名稱。你有這個名字的專欄嗎? (答案可能只是'RUNS [is.finite(RUNS)]') –

+0

我現在無法獲得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

回答

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 
+0

完美工作。非常感謝。 – user2900280

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)] 
+0

只適用於載體 –

0

嘗試

TEST = lapply(RUNS, function(x) subset(x, is.finite(x)) 
+0

感謝您的幫助。不知道爲什麼,但我仍然不斷爲'is.finite類型'列表'實現'方法。 – user2900280

+0

RUNS是列表的列表嗎? –