Я хочу используя R
организовать наиболее эффективный поиск значения в таблицах в формате data.frame
нравится этаR эффективный поиск в data.frame
x01 x02 x03 x04 x05 x06 x07
1 NA 100 200 300 400 500 600
2 10 1 4 3 6 7 1
3 20 2 5 2 5 8 2
4 30 3 6 1 4 9 8
значений в первой строке и первом столбце в порядок увеличения. Например, мне нужно найти значение для перекрестия столбца, содержащего 300
в первой строке и строке, содержащей 20
в первом столбце. Значение 2
. Код для этого:
coefficient_table_1 <- data.frame(
x01=c(NA, 10, 20, 30),
x02=c(100, 1, 2, 3),
x03=c(200, 4, 5, 6),
x04=c(300, 3, 2, 1),
x05=c(400, 6, 5, 4),
x06=c(500, 7, 8, 9),
x07=c(600, 1, 2, 8)
)
col_value <- 300
row_value <- 20
col <- 0
for(i in 2:ncol(coefficient_table_1)){
if(coefficient_table_1[1,i]==col_value){
col <- i
}
}
row <- which(coefficient_table_1$x01==row_value)
value <- coefficient_table_1[row, col]
Таблица может быть большой и поиск может быть расположен внутри петли. Каков наиболее эффективный способ поиска в data.frame?
Может быть стоит упомянуть возможность возвращать матрицу координат, как в 'которых (my.mat == 7, array.indices = TRUE)' –