Check if integer values are in a given list
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(data_frame), | intent(in) | :: | df | |||
integer, | intent(in) | :: | col_index | |||
integer(kind=ik), | intent(in), | dimension(:) | :: | values |
function df_isin_integer(df, col_index, values) result(mask) type(data_frame), intent(in) :: df integer, intent(in) :: col_index integer(ik), dimension(:), intent(in) :: values logical, dimension(:), allocatable :: mask integer(ik), dimension(:), allocatable :: col_data integer :: i, j if (col_index < 1 .or. col_index > df % ncols()) error stop "column index out of range" if (df % dtype(col_index) /= INTEGER_NUM) error stop "column is not integer type" col_data = df_get_col_integer(df, col_index) allocate (mask(size(col_data))) mask = .false. do i = 1, size(col_data) do j = 1, size(values) if (col_data(i) == values(j)) then mask(i) = .true. exit end if end do end do deallocate (col_data) end function df_isin_integer