Ошибка «аргумент имеет нулевую длину» в R

У меня есть матрица 18x18 из 1 и 0. Однако у меня есть приведенный ниже код, который добавляет дополнение к матрице, чтобы сделать ее 20x20, а затем проверяет соседей каждого элемента матрицы, если какая-либо матрица имеет все свои соседи, объединенные как 1.

counter = 0
  
  imageNewMatrix <- imageMatrix
  
  nrow(imageMatrix)
  ncol(imageMatrix)
  
  imageNewMatrixa <- cbind(imageNewMatrix, 0)
  imageNewMatrixB <- rbind(imageNewMatrixa, 0)
  imageNewMatrixC <- cbind(imageNewMatrixB, 0)
  imageNewMatrixD <- rbind(imageNewMatrixC, 0)
  nrow(imageNewMatrixD)
  ncol(imageNewMatrixD)
 
  for (row in 1:nrow(imageNewMatrixD)) {
    for (col in 1:ncol(imageNewMatrixD)) {
      if (imageNewMatrixD[row,col] == 1) {
        
        # Get entry of the left pixel
        
        pixel_to_left = as.numeric(imageNewMatrixD[row, col-1])
        
        # Get entry of the right pixel
        
        pixel_to_right = as.numeric(imageNewMatrixD[row, col+1])
        
        # Get entry of the pixel at top
        
        pixel_at_top = as.numeric(imageNewMatrixD[row-1, col])
        
        # Get entry of the pixel at top-left
        
        pixel_at_top_left = as.numeric(imageNewMatrixD[row-1, col-1])
        
        # Get entry of the pixel at top right
        
        pixel_at_top_right = as.numeric(imageNewMatrixD[row-1, col+1])
        
        # Get entry of the pixel at bottom
        
        pixel_at_bottom = as.numeric(imageNewMatrixD[row+1, col])
        
        # Get entry of the pixel at bottom left
        
        pixel_at_bottom_left = as.numeric(imageNewMatrixD[row+1, col-1])
        
        # Get entry of the pixel at bottom right
        
        pixel_at_bottom_right = as.numeric(imageNewMatrixD[row+1, col+1])
        
        
        pixel_sum = pixel_to_left + pixel_to_right + pixel_at_top +
          pixel_at_top_left + pixel_at_top_right + pixel_at_bottom +
          pixel_at_bottom_left + pixel_at_bottom_right
        
        
        if (as.numeric(pixel_sum == 0)) {
          counter = counter + 1
        } else {
          counter = 0
        }
      
        
        
      }
    }
    
  }
  
  neigh_1 = counter

Всякий раз, когда я пытаюсь запустить этот код, появляется ошибка Error in if (as.numeric(pixel_sum == 0)) { : argument is of length zero. Может ли кто-нибудь помочь мне с этой ошибкой?

распечатать pixel_sum как это выглядит? хотя бы один из ваших пикселей пуст: if (as.numeric({0 + NULL} == 0)) {} вы начинаете с столбца 1 и col - 1; из 1 ряда и row - 1

rawr 16.03.2022 18:49

@rawr Сумма пикселей равна numeric(0). Также извините, но я не понял вторую часть о начале столбца 1. Можете ли вы объяснить немного больше?

Dennis Main 16.03.2022 18:54
0 + NULL есть numeric(0). вы не можете начать с столбца 1 и идти влево, возможно, вы имели в виду, что ваш цикл проходит через столбцы 2:19 и строки 2:19
rawr 16.03.2022 20:08

@rawr Понял, спасибо за ответ!

Dennis Main 16.03.2022 22:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я сделал ошибку, ища столбцы от n до nrow. Вместо этого я использовал столбцы 2:19 и строки 2:19.

Я также использовал isTRUE при проверке, равна ли сумма пикселей 0 или нет.

Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать добавьте дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 17.03.2022 03:02

Другие вопросы по теме