如何从R中的列表中删除元素,同时保持原始的列表打印格式?

bxpogfeg  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(135)

我已经在Stack Overflow和网上广泛搜索了如何从列表中删除特定元素,我已经部分找到了方法。然而,当我从这个示例列表中删除一个元素时,我丢失了列表的原始格式。让我在下面的图片中解释一下。我如何删除“Call”元素及其后面的文本(“survdiff(公式= Surv(时间,状态)~性别,数据=肺部)”),同时保留原始格式?
示例代码张贴在底部。

示例代码:

library(survival)
library(survmine)

fit <- survfit(Surv(time, status) ~ sex, data = lung)
surv_diff <- survdiff(Surv(time, status) ~ sex, data = lung)
surv_diff

str(surv_diff)

test <- surv_diff[-7] # trying to remove the "Call" element and all its text
ggazkfy8

ggazkfy81#

当你删除那个元素的时候,你也删除了class属性。你可以像这样把它放回去:

class(test) <- "survdiff"
nhaq1z21

nhaq1z212#

我运行了你的示例代码,它给了我一个6项的列表(没有p值),所以在我的例子中,我正在处理第6个元素--你可能需要处理第7个元素。

# remove sixth list item (keeping the class attribute)
surv_diff[6] <- NULL

# look at the resulting list 
str(surv_diff)
List of 5
 $ n    : 'table' int [1:2(1d)] 138 90
  ..- attr(*, "dimnames")=List of 1
  .. ..$ groups: chr [1:2] "sex=1" "sex=2"
 $ obs  : num [1:2] 112 53
 $ exp  : num [1:2] 91.6 73.4
 $ var  : num [1:2, 1:2] 40.4 -40.4 -40.4 40.4
 $ chisq: num 10.3
 - attr(*, "class")= chr "survdiff"

 # print
 surv_diff
        N Observed Expected (O-E)^2/E (O-E)^2/V
 sex=1 138      112     91.6      4.55      10.3
 sex=2  90       53     73.4      5.68      10.3

  Chisq= 10.3  on 1 degrees of freedom, p= 0.001

请记住,从对象中删除部件可能会在进一步处理时暗示某种类型的错误行为。

相关问题