0

私のRスクリプトでは...

myObject次のようなオブジェクトがあります。

> myObject
          m    convInfo        data        call dataClasses     control 
      FALSE       FALSE       FALSE       FALSE       FALSE       FALSE 

これは、適合するis.na(obj)場所から返されるものです。objnls

最初の項目が TRUE ではなく FALSE かどうかをテストしようとしています。どうすればそれを抽出できますか?試してみmyObject$mましたが、うまくいきませんでした。

4

2 に答える 2

1

名前付き (論理) ベクトルがあります。

> v <- 1:5
> names(v) <- LETTERS[1:5]
> is.na(v)
    A     B     C     D     E 
FALSE FALSE FALSE FALSE FALSE 
> myObj <- .Last.value

他のアトミック ベクトルと同じようにアドレス指定します。

> myObj[1]
    A 
FALSE 
> myObj[1] == FALSE
   A 
TRUE 
于 2012-07-05T19:57:19.940 に答える
0

によって返されるオブジェクトはnls()リストです。リスト上のの振る舞いはis.na()、何がそうではないかという意味でやや独特ですNA。差出人?is.na

Value:

     The default method for ‘is.na’ applied to an atomic vector returns
     a logical vector of the same length as its argument ‘x’,
     containing ‘TRUE’ for those elements marked ‘NA’ or, for numeric
     or complex vectors, ‘NaN’ (!) and ‘FALSE’ otherwise.  ‘dim’,
     ‘dimnames’ and ‘names’ attributes are preserved.

     The default method also works for lists and pairlists: the result
     for an element is false unless that element is a length-one atomic
     vector and the single element of that vector is regarded as ‘NA’
     or ‘NaN’.

上記の引用テキストに従って決定された&値をt持つ論理ベクトルも同様です。したがって、すべてTRUEFALSEt

t[1]
t["m"]
head(t, 1)

の最初の要素を抽出しtます。テストしたい場合は、次のFALSEことを試してみてください。

!isTRUE(t[1])

例えば

> set.seed(1)
> logi <- sample(c(TRUE,FALSE), 5, replace = TRUE)
> logi
[1]  TRUE  TRUE FALSE FALSE  TRUE
> !isTRUE(logi[1])
[1] FALSE

$バージョンが機能しない理由は、非アトミックベクトルにのみ$適用されるように文書化されているためです。(またはyour )は、同じタイプの要素を含むという点でアトミックベクトルです。logit

> is.atomic(logi)
[1] TRUE
> names(logi) <- letters[1:5]
> logi$a
Error in logi$a : $ operator is invalid for atomic vectors
> logi["a"]
   a 
TRUE
于 2012-07-05T19:19:24.007 に答える