首页 > 解决方案 > 循环数据时计算错误

问题描述

我有一个包含 3 个变量的数据框,我正在尝试计算在公司上市的第一年可以用 100 英镑购买多少个字符

数据看起来像

YEAR_END COMPANY_NUMBER CLOSE_SHARE_PRICE NUMBER_OF_SHARES 31/12/2002 22705 7.5 0
31/12/2003 22705 6.55 0 31/12/2004 22705 6.55 0 31/12/2005 22705 NA 0 31/12/2006 22705 NA 0 31/12/2007 22705 NA 0 31/12/2008 1/3 2270 NA 12/2004 11356069 1.09 0 31/12/2002 SC192761 2.42 0 31/12/2003 SC192761 0.9 0 31/12/2004 SC192761 NA 0 31/12/2005 SC192761 NA 36 SC1927/12/20 2007 SC192761 NA 0 31/12/2002 10395804 1.04 0 31/12/2003 10395804 1.04 0 2004 年 12 月 31 日 10395804 不适用 0 2003 年 12 月 31 日 5625107 0.02 0 2004 年 12 月 31 日 5625107 0 0

我写的代码是:

 for (i in 1:(nrow(PLC_Return)-1))
 if (i == 1)
   {
   NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i])
   } else if
   (is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1])
   {
    NUMBER_OF_SHARES[i]=0  
   }   else 
   {
   NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i])
   }

基本上是公司第一年计算购买的股份。然后在发送年份我不需要计算。

 for (i in 1:(nrow(PLC_Return)-1))
 if (i == 1)
   {
   NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i])
   } else if
   (is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1])
   {
    NUMBER_OF_SHARES[i]=0  
   }   else 
   {
   NUMBER_OF_SHARES[i] = 100/is.na(CLOSE_SHARE_PRICE[i])
   }

我收到一个错误错误:“}”中的意外'}'

   {

谁能帮我解决这个问题?

提前致谢。

亲切的问候

阿森

标签: rparenthesesextra

解决方案


May be a proper indentation and for loop block could help

for (i in 1:(nrow(PLC_Return)-1))
{
      if (i == 1)
         {
              NUMBER_OF_SHARES[i] = 
              1000/is.na(CLOSE_SHARE_PRICE[i])
          } 
      else if((is.na(PLC_Return[i, 1]) == is.na(PLC_Return[i + 1, 1]))   {
           NUMBER_OF_SHARES[i]=0  
   }   
       else 
   {
               NUMBER_OF_SHARES[i] = 
             1100is.na(CLOSE_SHARE_PRICE[i])
   }
}

推荐阅读