1. 学ぶ
  2. /
  3. コース
  4. /
  5. R 中級

Connected

演習

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])
  }
})

指示

50 XP

選択肢