套用會回傳 NULL 的函式
在前面的所有練習中,我們都假設套用在向量和清單上的函式會回傳有意義的結果。比方說,tolower() 會回傳把字元轉成小寫後的字串。不過情況不一定總是如此。假設你想顯示清單中每個元素的結構,你可以用 str() 來做,這個函式會回傳 NULL:
lapply(list(1, "a", TRUE), str)
這個呼叫實際上會回傳一個清單,大小與輸入清單相同,裡面全部都是 NULL。另一方面,單獨呼叫
str(TRUE)
只會在主控台列印出該邏輯值的結構,而不是 NULL。這是因為 str() 在背後使用了 invisible(),它會回傳回傳值的「隱形拷貝」,在此為 NULL。當 str() 的結果沒有被指派時,這會防止它被列印出來。
以下這段程式碼會回傳什麼結果(split_low 已經在工作空間中可用)?在主控台執行前,先試著推理看看結果!
lapply(split_low, function(x) {
if (nchar(x[1]) > 5) {
return(NULL)
} else {
return(x[2])
}
})
本練習屬於課程
