Как я могу включить переменную в вектор в R? - PullRequest
2 голосов
/ 10 апреля 2019

В цикле я хочу вставить «i» в вектор.Как я могу это сделать?

Я попробовал следующий код:

m1nash.best.response.coordinates<- NULL
for (i in 1:2) {
  if(m1nash[1,i]>m1nash[2,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 1,i)
  } if(m1nash[2,i]>m1nash[1,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 2, i)
  }

}

Наткнулся на следующую консоль:

Error: unexpected 'if' in:
"    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 1,i)
  } if"
>     m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 2, i)
Error: object 'i' not found
>   }
Error: unexpected '}' in "  }"
>   
> }
Error: unexpected '}' in "}"

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Добро пожаловать, Каан,

Есть пара лучших практик, которые вы должны сделать, в том числе: for цикл или if оператор - лучший выбор.

Однако, если всеВы беспокоитесь о том, чтобы заставить ваш код работать.Есть пара вещей, которые вы можете сделать.

Я бы предпочел инициализировать m1nash.best.response.coordinates как пустой вектор вместо NULL.Если вы можете сделать это, присвоив ему значение c()

Во-вторых, я полагаю, что в этой строке у вас есть орфографическая ошибка if(m1nash[2,i]>m1nas[1,i]).m1nas должно быть m1nash.

Вы можете попробовать этот цикл ниже

m1nash.best.response.coordinates <- c()
m1nash <- matrix(data = rnorm(4), nrow=2, ncol=2) #my test matrix

for (i in 1:2) {
  if (m1nash[1, i] > m1nash[2, i]) {
    m1nash.best.response.coordinates <-
      c(m1nash.best.response.coordinates, 1, i)
  }
  if (m1nash[2, i] > m1nash[1, i]) {
    m1nash.best.response.coordinates <-
      c(m1nash.best.response.coordinates, 2, i)
  }

}

Вы не отвечаете условию, если m1nash[1,i]= m1nash[2,i].Если это невозможно, возможно, даже используйте функцию ifelse, если хотите остаться в семье if.

Удачи

0 голосов
/ 10 апреля 2019

попробуйте это:

m1nash.best.response.coordinates<- NULL
for (i in 1:2) {
  if (m1nash[1,i]>m1nash[2,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 1,i)
  } 
  if (m1nash[2,i]>m1nash[1,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 2, i)
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...