如何在metrix中找到特定列中的所有数字字符并打印它们?
如何在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
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