如何在metrix中找到特定列中的所有数字字符并打印它们?

如何在metrix中找到特定列中的所有数字字符并打印它们?,r,R,如何在metrix中找到特定列中的所有数字字符并打印它们? 例如,此列表: dat <- matrix(c(1,"a","b", 11,12,13), nrow = 2, ncol = 3, byrow = TRUE, dimnames = list(c("row1", "row2"), c("C.1", "C.2", "C.3"))) dat C.1 C.2 C.3 row

如何在metrix中找到特定列中的所有数字字符并打印它们? 例如,此列表:

dat <- matrix(c(1,"a","b", 11,12,13), nrow = 2, ncol = 3, byrow = TRUE, 
               dimnames = list(c("row1", "row2"), 
                               c("C.1", "C.2", "C.3"))) 
dat 
     C.1  C.2  C.3 
row1 "1"  "a"  "b" 
row2 "11" "12" "13" 
我们可以用grep

如果需要每个元素在矩阵中的位置,则可以使用:

> num <- grep("\\d+", c(dat), value=TRUE)
> positions <- sapply(num, function(x) which(dat == x, arr.ind = TRUE))
> rownames(positions) <- c("row", "col")
> positions
    1 11 12 13
row 1  2  2  2
col 1  1  2  3

它告诉你数字1在第1行,第1列在矩阵dat中。数字11位于dat中的第2行第1列。

将其转换为向量,然后删除所有NAs。这是因为转换将非数字数据放入NA


其中的参数arr.ind可以设置为TRUE:whicharygrepl\\d+,cdat,dimdat,T@Onyambu你说得对,我确实用了arr.ind,但我走了很长的路
> num <- grep("\\d+", c(dat), value=TRUE)
> positions <- sapply(num, function(x) which(dat == x, arr.ind = TRUE))
> rownames(positions) <- c("row", "col")
> positions
    1 11 12 13
row 1  2  2  2
col 1  1  2  3
v <- as.numeric(dat)
v[!is.na(v)]

[1]  1 11 12 13