如何在R中的向量中包含变量?

问题描述 投票:2回答:2

在循环中,我想在矢量中插入“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 "}"
r loops variables
2个回答
0
投票

试试这个:

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)
  }

}

0
投票

欢迎Kaan

您应该做出几个最佳实践选择,包括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功能。

祝好运

© www.soinside.com 2019 - 2024. All rights reserved.