開始使用免費開始

套用會回傳 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])
  }
})

本練習屬於課程

R 中級

檢視課程

動手互動練習

將理論付諸實踐,立即體驗我們的互動練習

開始練習