2013-07-25 91 views
0

我知道R中的switch語句沒有像在C++中那樣工作,但我已閱讀文檔並且似乎無法弄清爲什麼以下不起作用在R中使用Switch語句

file.types <- c('bmp', 'jpeg', 'png', 'tiff', 'eps', 'pdf', 'ps') 
    if(tolower(file.type) %in% file.types) { 
    switch(file.type, 
      bmp = bmp(filename=paste(file.location, file.name, '.', 
            file.type, sep=''), 
        width=res[2], height=res[1]) 
      jpeg = jpeg(filename=paste(file.location, file.name, '.', 
             file.type, sep=''), 
        width=res[2], height=res[1]) 
      png = png(filename=paste(file.location, file.name, '.', 
            file.type, sep=''), 
        width=res[2], height=res[1]) 
      tiff = tiff(filename=paste(file.location, file.name, '.', 
             file.type, sep=''), 
         width=res[2], height=res[1]) 
      eps = postscript(filename=paste(file.location, file.name, '.', 
              file.type, sep=''), 
          width=res[2], height=res[1]) 
      pdf = postscript(filename=paste(file.location, file.name, '.', 
              file.type, sep=''), 
          width=res[2], height=res[1]) 
      ps = postscript(filename=paste(file.location, file.name, '.', 
              file.type, sep=''), 
          width=res[2], height=res[1])) 
    } else { 
     stop(paste(file.type,' is not supported', sep='')) 
    } 

我收到以下錯誤,當file.type是 'JPEG'

Error: unexpected symbol in: 
"   bmp = {bmp(filename=paste(file.location, file.name, '.', file.type, sep=''), width=res[2], height=res[1])} 
     jpeg" 

欣賞任何見解!

回答

1

這是語法錯誤。您在switch的每個選項末尾缺少,(逗號),例如,

switch(file.type, 
     bmp = bmp(filename=paste(file.location, file.name, '.', 
           file.type, sep=''), 
       width=res[2], height=res[1]), 
              ^here 

的一般形式是

switch(foo, 
     opt1 = statement1, 
     opt2 = statement2, 
     opt3 = , 
     opt4 = statement3) 

如果雙方opt3opt4返回statement3值。

+0

你是對的。謝謝! – lajulajay