如何在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"
答案 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