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

时间:2018-08-14 17:10:22

标签: 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 
row1 "1"  "a"  "b" 
row2 "11" "12" "13" 

2 个答案:

答案 0 :(得分:1)

我们可以使用grep

> grep("\\d+", c(dat), value=TRUE)
[1] "1"  "11" "12" "13"

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

> 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在矩阵dat中的第1行,第1行。数字11位于dat中第2行的第2行。

答案 1 :(得分:0)

将其转换为向量,然后删除所有NAs。之所以可行,是因为该转换会将非数字数据放入NA

v <- as.numeric(dat)
v[!is.na(v)]

[1]  1 11 12 13