簡體   English   中英

R:返回部分字符串匹配的數組索引

[英]R: return array index of partial string match

假設我有一個10x10的矩陣,其中填充了1:100。 我想搜索所有以“ 0”結尾的數字,並且我想要它們的[i,j]索引號。 我嘗試了which(..., arr.ind=T) ,但是找不到與之配合使用的函數。 我也嘗試了grep('0$', ...)但它只返回矩陣的單個索引作為向量。 我想可以將該數字轉換為二進制索引,但是有沒有更簡單的方法?

x <- t(matrix(1:100,nrow=10,ncol=10))
#  Output:
#  [1,]  1  10
#  [2,]  2  10
#  ...
#  [10,] 10 10

我們可以將grepl輸出轉換為與原始'x'具有相同dimmatrix ,然后將whicharr.ind=TRUE

which(`dim<-`(grepl('0$', x), dim(x)), arr.ind=TRUE)
#       row col
# [1,]   1  10
# [2,]   2  10
# [3,]   3  10
# [4,]   4  10
# [5,]   5  10
# [6,]   6  10
# [7,]   7  10
# [8,]   8  10
# [9,]   9  10
#[10,]  10  10

或者在不改變dim ,我們得到的grepl輸出作為一個logical向量,否定( ! ),這樣真亦假和假為真,與原來的矩陣相乘得到的輸出matrix 這還將替換以'0'結尾的'x'中的值為0。然后再次取反( ! ),以使0轉換為TRUE,所有其他值轉換為FALSE。 使用which ,我們得到對應於TRUE值的索引。

which(!x*(!(grepl('0$', x))), arr.ind=TRUE)

暫無
暫無

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

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