在R脚本中从外观怪异的对象提取数据

在R脚本中从外观怪异的对象提取数据,r,R,在我的R脚本中 我有一个对象myObject,它看起来像这样: > myObject m convInfo data call dataClasses control FALSE FALSE FALSE FALSE FALSE FALSE 它是从is.na(obj)返回的,其中obj是nlsfit 我试图测试第一项是否为假而非真。我怎样才能把它提取出来

在我的R脚本中

我有一个对象
myObject
,它看起来像这样:

> myObject
          m    convInfo        data        call dataClasses     control 
      FALSE       FALSE       FALSE       FALSE       FALSE       FALSE 
它是从
is.na(obj)
返回的,其中
obj
nls
fit


我试图测试第一项是否为假而非真。我怎样才能把它提取出来?我尝试了
myObject$m
,但没有成功。

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
是一个逻辑向量,其
t
中的
TRUE
FALSE
值根据上面引用的文本确定。因此,所有

t[1]
t["m"]
head(t, 1)
提取
t
的第一个元素。如果要测试
FALSE
,我可以尝试:

!isTRUE(t[1])
例如

您有一个命名(逻辑)向量


对不起,忘了更改标题。您能提供更多细节吗?可能是
str(t)
dput(t)
。或者至少描述一下您是如何创建
t
。还值得注意的是,
t
是一个内置函数,您已经覆盖了它,这不是最佳做法。+1关于覆盖基本R函数的注意事项,请参见注释。从长远来看,事情完全搞砸了。
> set.seed(1)
> logi <- sample(c(TRUE,FALSE), 5, replace = TRUE)
> logi
[1]  TRUE  TRUE FALSE FALSE  TRUE
> !isTRUE(logi[1])
[1] FALSE
> 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
> 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