【问题标题】:If else loop error in R如果在R中循环错误
【发布时间】:2018-07-15 06:06:32
【问题描述】:

我正在尝试解决在hackerrank 上发布的R 中比较三元组的问题 尽管我已经概述了整个步骤,但它仍然没有在hackerrank 和RStudio 中给出正确的结果。谁能告诉我

一个可重现的例子

m = data.frame(ints = as.integer())


m <- structure(rbind(m,c(5,6,7)), .Names = names(m))


m <- structure(rbind(m,c(3,6,10)), .Names = names(m))



names(m) = c("no1","no2","no3")


    enter## the output gives m as below 

`no1 no2 no3
1   5   6   7
2   3   6  10

## I need to compare the corresponding values in both rows

#if m[1,1] != m[2,1] then I need to store 1 in a vector or dataframe

#if m[1,2] != m[2,2] then I need to store 1 in a vector or dataframe

#if m[1,3] != m[2,3] then I need to store 1 in a vector or dataframe


#so We will get output as [1,1]

## defining a vector to store output as below

    g = c(0,0,0)

g = c(0,0,0)
> g
[1] 0 0 0
> g[1]
[1] 0

## so my answer is as  below 

if(m[1,1]== m[2,1]))
{
  print("nothing")
}
  else
   {
  (g[1] = 1)
   }


if((m[1,2]==m[2,2]))
{
  print("nothing")

}     
  else
   {

     (g[2] = 1)
    }


if((m[1,3]==m[2,3]))
 {
  print("nothing")

 }     
  else
   {

      (g[3] = 1)
   }      


g = data.frame()
g = c(0,0,0)

我每次都收到以下错误

Error: unexpected 'else' in " else"

还有g 甚至取中间值的值,它不应该取值

g
[1] 1 1 1

谁能解释为什么它仍然将 1 设置为中间值。

【问题讨论】:

    标签: r loops if-statement dataframe vector


    【解决方案1】:

    R 中,行尾标记指令的结束,除非有左括号、左大括号或未完成的指令,例如else 表示其他情况。

    试试

    if(m[1,1]== m[2,1]) {
      print("nothing")
    } else
       {
      (g[1] = 1)
       }
    

    或者更短

    if(m[1,1]== m[2,1])
      print("nothing") else
      g[1] = 1
    

    无论如何,您的问题最好通过以下方式解决:

    g <- as.numeric(m[1,] != m[2,])
    # [1] 1 0 1
    

    【讨论】:

    • 感谢@Moody_Mudskipper 的精彩解释。
    猜你喜欢
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多