R で整数 (0) をキャッチする方法 (例あり)


R でwhat()関数を使用すると、 integer(0)が返されることがあります。これは、ベクトル内のどの要素も TRUE と評価されないことを示します。

たとえば、次のコードを使用して、ベクトルのどの要素が値 10 に等しいかを確認するとします。

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 10
x <- which(data == 10 )

#view results
x

integer(0)

ベクトル内の要素はいずれも 10 に等しくないため、結果は長さ 0 の整数となり、R ではinteger(0)として記述されます。

整数 (0) はエラーではないことに注意することが重要ですが、場合によっては、それがいつ発生するかを知りたい場合もあります。

次の例は、R で整数 (0)をキャプチャする方法を示しています。

例 1: Identify() 関数を使用して R 内の整数 (0) をキャッチする

R で整数 (0)をキャッチする最も簡単な方法は、次のようにIdentity()関数を使用することです。

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 10
x <- which(data == 10 )

#test if x is identical to integer(0)
identical(x, integer(0))

[1] TRUE

結果はinteger(0)に等しいため、 R はTRUEを返します。

これにより、 what() 関数の結果が長さ 0 の整数であることがわかります。

例 2: if else 関数を使用して R で整数 (0) をキャッチする

整数 (0)をキャッチするもう 1 つの方法は、整数 (0)が発生した場合に特定のものを返す if else 関数を定義することです。

たとえば、整数 (0 ) が表示された場合に「整数 (0 ) です」というフレーズを返す次の関数を定義できます。

 #define function to catch integer(0)
integer0_test <- function (data) {
 
  if (identical(data, integer(0))) {
    return (' It is an integer(0) ')
  }

  else {
    return (data)
  }

}

次に、この関数を使用できます。

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 10
x <- which(data == 10 )

#use function to test if x is integer(0)
integer0_test(x)

[1] "It is an integer(0)"

x は確かにinteger(0)なので、関数は指定した文を返します。

x がinteger(0)でない場合、この関数は単に what() 関数の結果を返します。

 #define vector of values
data <- c(1, 2, 4, 4, 5, 7, 8, 9)

#find elements in vector equal to 4
x <- which(data == 4 )

#use function to test if x is integer(0)
integer0_test(x)

[1] 3 4

これらは値 4 に等しいベクトル要素の位置であるため、関数は34を返します。

追加リソース

次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。

R で最初の tryCatch() 関数を作成する方法
R でネストされた For ループを作成する方法
Rで関数の値を返す方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です