簡體   English   中英

哪些行包含指定元素,使用 R

[英]Which rows contain the specified element, using R

這是一個列表,每一行代表一個隨機事件

      [,1]        [,2]    [,3]   
 [1,] "Zebra"     "bat"   "lion" 
 [2,] "crocodile" "lion"  "bat"  
 [3,] "dog"       "fish"  "snake"
 [4,] "bat"       "zebra" "snake"
 [5,] "dog"       "Bear"  "bat"  
 [6,] "dog"       "Zebra" "lion" 
 [7,] "Bear"      "dog"   "Zebra"
 [8,] "pig"       "dog"   "snake"
 [9,] "zebra"     "lion"  "fish" 
[10,] "Bear"      "dog"   "Zebra"

我正在嘗試使用 %in% 命令來檢查哪些事件中有狗。

對於基本相等,使用which(., arr.ind=TRUE)

m <- matrix(1:25, nr=5)
m
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    6   11   16   21
# [2,]    2    7   12   17   22
# [3,]    3    8   13   18   23
# [4,]    4    9   14   19   24
# [5,]    5   10   15   20   25

which(m == 5L, arr.ind = TRUE)
#      row col
# [1,]   5   1

如果您需要使用%in%設置成員資格,那么僅將==替換為%in%是行不通的,不幸的是,

which(m %in% c(5L, 9L, 12L), arr.ind=TRUE)
# [1]  5  9 12

這是因為m ==. 返回一個matrix ,但m %in%. 返回一個向量(我不記得為什么 atm):

m == 5L
#       [,1]  [,2]  [,3]  [,4]  [,5]
# [1,] FALSE FALSE FALSE FALSE FALSE
# [2,] FALSE FALSE FALSE FALSE FALSE
# [3,] FALSE FALSE FALSE FALSE FALSE
# [4,] FALSE FALSE FALSE FALSE FALSE
# [5,]  TRUE FALSE FALSE FALSE FALSE

m %in% c(5L,9L,12L)
#  [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [20] FALSE FALSE FALSE FALSE FALSE FALSE

我們可以通過強制返回是一個矩陣來解決這個問題:

which(matrix(m %in% c(5L,9L,12L), nrow=nrow(m)), arr.ind = TRUE)
#      row col
# [1,]   5   1
# [2,]   4   2
# [3,]   2   3

要獲取其中包含單詞'dog'的行索引,您可以使用rowSums作為 -

which(rowSums(mat == 'dog') > 0)
#[1]  3  5  6  7  8 10

數據

mat <- structure(c("Zebra", "crocodile", "dog", "bat", "dog", "dog", 
"Bear", "pig", "zebra", "Bear", "bat", "lion", "fish", "zebra", 
"Bear", "Zebra", "dog", "dog", "lion", "dog", "lion", "bat", 
"snake", "snake", "bat", "lion", "Zebra", "snake", "fish", "Zebra"
), .Dim = c(10L, 3L), .Dimnames = list(NULL, NULL))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM