Проблема в том, что 1799 - это не 1799-я строка , это 1799-й элемент по столбцам.
dat <- mtcars[1:4,]
dat[3,3] <- NA
dat
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22.8 4 NA 93 3.85 2.320 18.61 1 1 4 1
# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
which(is.na(dat))
# [1] 11
Эти 11 включают: 4 из столбец 1, 4 из столбца 2 и третий элемент в столбце 3. Если вы хотите провести вычисления, то
isna <- which(is.na(dat))
(isna - 1) %% nrow(dat) + 1
# [1] 3 # row of the NA
(isna - 1) %/% nrow(dat) + 1
# [1] 3 # column of the NA
ind2arr <- function(ind, nr) cbind((ind-1) %% nr + 1, (ind-1) %/% nr + 1)
ind2arr(which(is.na(dat)), nrow(dat))
# [,1] [,2]
# [1,] 3 3
### demo
ind <- seq_len(prod(dim(dat)))
cbind(ind, ind2arr(ind, nrow(dat)))
# ind
# [1,] 1 1 1
# [2,] 2 2 1
# [3,] 3 3 1
# [4,] 4 4 1
# [5,] 5 1 2
# [6,] 6 2 2
# [7,] 7 3 2
# [8,] 8 4 2
# ...truncated...
# [41,] 41 1 11
# [42,] 42 2 11
# [43,] 43 3 11
# [44,] 44 4 11
Или лучше добавьте arr.ind=TRUE
, чтобы получить лучшую перспективу.
which(is.na(dat), arr.ind = TRUE)
# row col
# Datsun 710 3 3