日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R语言中的异常处理和eval函数

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言中的异常处理和eval函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異常處理tryCatch()

[R]R語言里的異常處理與錯誤控制
看看下面這個例子就能快速了解。

#這里不要用c(1,2,'a',4), 因為R中向量中的元素必須一致,會自動轉換成c("1","2","a","4")。得用list。 #依次取list中的元素,但i='a'時,會報錯,執行error函數中的語句, #而且error僅在出錯時執行。但是,無論是否出錯,finally中語句一定會執行。 #另外,tryCatch()是一個函數,有返回值,沒有報錯時返回參數表達式的值,若報錯了就返回error函數的值。for(i in list(1,2,'a',4)){result = tryCatch ({y = i + 1print(paste("y =", y))y #這里的 y 就是函數tryCatch()的返回值。} ,error = function (e) { #error 是小寫的字母。print(paste("i =", i, "有錯"))i = 3y = i +1print(y)"error" #當i="a"時,執行error中的語句,這里的函數tryCatch()的返回值就是error()函數的返回值,就是這行的字符串“error”,不再是上面的y。} , finally = {print('finally')})print(paste("result =", result))print("*************\n\n")#不顯示換行,可以用cat() }

結果為:

[1] "y = 2" [1] "finally" [1] "result = 2" [1] "*************\n\n" [1] "y = 3" [1] "finally" [1] "result = 3" [1] "*************\n\n" [1] "i = a 有錯" [1] 4 [1] "finally" [1] "result = error" #注意這里的tryCatch()的返回值發生變化。 [1] "*************\n\n" [1] "y = 5" [1] "finally" [1] "result = 5" [1] "*************\n\n"

eval()

可以把字符串轉化成表達式來執行。
eval和parse結合使用,參數 text 等于要轉化的字符串。

s<- "print('hello world')" eval(parse(text = s))

向量與列表

向量中沒有嵌套結構,如下例所示,系統會把向量中向量自動展開,像python中的extend()。而且,向量中的元素必須是同一類型,否則會自動轉換。
但是列表中就不一樣,可以保留原來的數據結構,用“[[ ]]”來引用列表中的元素,如list[[1]]表示列表中的第一個元素。

> c(1,2, c(4,5,6)) [1] 1 2 4 5 6 #結果還是一個向量> list(1,2,c(4,5,6)) [[1]] [1] 1[[2]] [1] 2[[3]] [1] 4 5 6> l<- list(c(1, 2)) > l[[1]][2] #引用列表中第一個元素,即一個向量,再引用向量中的第二個元素。 [1] 2

總結

以上是生活随笔為你收集整理的R语言中的异常处理和eval函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。