【问题标题】:If else statements and assigning variablesIf else 语句和分配变量
【发布时间】:2014-03-05 08:49:19
【问题描述】:

所以我有一个正在为游戏编写的代码。游戏在这里无关紧要,但这是我的代码中产生问题的部分。本质上,我希望该函数接受士兵类型的输入,然后替换为建造任何给定数量的士兵所需的每种资源的数量。我已经编写了函数的后半部分并且工作正常,但是我遇到了变量赋值问题。

 cost=function(troop,from,to){
    troop=c("phalanx","druidrider","pathfinder")
    if(troop=="phalanx"){
        w=100
        cl=130
        i=55
        cr=30
   } else if(troop=="druidrider"){
        w=360
        cl=330
        i=280
        cr=120
   } else if(troop=="pathfinder"){

等等。我想知道一些事情:首先,有没有更有效的方法来做到这一点?我希望能够输入“成本(方阵,30,50)”,它会自动使用我尝试分配给方阵的值来获取资源 w、cl、i、cr,并将其替换为其余的方程。它给了我一个错误提示

Warning message:
In if (troop == "phalanx") { :
 the condition has length > 1 and only the first element will be used

我做错了什么?

谢谢!

【问题讨论】:

  • 这是什么编程语言? (另外,代码行开头的+s 或 Markdown 是否出错了?)
  • troop=c("phalanx","druidrider","pathfinder") 是做什么的?
  • 它在 R 中。我认为 troop=c("phalanx","druidrider","pathfinder") 会摆脱错误,因为它会说“方阵未定义”当我复制和粘贴时,+ 符号就在我的代码的开头
  • troop 作为函数的参数然后立即覆盖任何可能已传递给troop 的值是没有任何意义的。

标签: r if-statement variable-assignment


【解决方案1】:

警告是因为troop 是一个具有 3 个元素的向量,当您进行比较时:troop=="phalanx" 它返回一个具有 3 个值(TRUE、FALSE、FALSE)的逻辑向量。然后将其传递给 if 语句,该语句期望单个逻辑值,但它收到 3,因此它忽略最后 2 个并根据第一个值执行代码。

目前尚不清楚您究竟想在这里做什么,但创建具有所需值的列表列表可能更简单,然后您可以按名称访问子列表以获取与相关联的值集那个名字。

【讨论】:

    【解决方案2】:

    你在你的函数中犯了一个错误。你不能重新分配部队。

    cost=function(troop,from,to){
        #troop=c("phalanx","druidrider","pathfinder")
        if(troop=="phalanx"){
            w=100
            cl=130
            i=55
            cr=30
         } else if(troop=="druidrider"){
            w=360
            cl=330
            i=280
            cr=120
         } else if(troop=="pathfinder"){
    

    只要放出troop = 部分。如果你有它,部队是一个向量,然后if 不知道它应该与向量的哪个元素进行比较。在您的代码中写出if(troop=="phalanx")if(c("phalanx","druidrider","pathfinder") == "phalanx"),这没有意义(因为它提供了一个布尔向量TRUE, FALSE, FALSE,并且只使用了第一个TRUE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2021-09-14
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      相关资源
      最近更新 更多