在 R $ 运算符中,对于子集之后的原子向量无效

问题描述 投票:0回答:1

我有一个数据框,我将其分为三个。在原始数据帧中,我可以在变量上进一步拆分数据,但是一旦我将其子集化,我就不能再这样做,错误 $ 运算符对于原子向量无效。我不清楚为什么会这样,有人有什么想法吗?

我无法真正提供最小的可重现示例,但下面是使用的代码。

#Origional dataset = CT_variable_Biom

##First splitting into three categories
CT_variable_Biom <- CT_variable_Biom %>%
  mutate(
    level_of_risk = case_when(
      high_risk == 1 ~ "high",
      medium_risk == 1 ~ "medium",
      low_risk == 1 ~ "low",
      TRUE ~ NA_character_  
    )
  )

medium_risk <- subset(CT_variable_Biom, CT_variable_Biom$level_of_risk=="medium")
high_risk <- subset(CT_variable_Biom, CT_variable_Biom$level_of_risk=="high")
low_risk <- subset(CT_variable_Biom, CT_variable_Biom$level_of_risk=="low")

#Split based on level

#This one works as normal
False_Negatives_overall <- subset(CT_variable_Biom , CT_variable_Biom$Biomarker<0.25)
#This one returns $ operator is invalid for atomic vectors
False_Negatives <- subset(medium_risk, medium_risk$Biomarker<0.25)

我认为我的三个类别子集中的某些内容导致了这种情况,但我不确定是什么

非常感谢。

r dplyr subset
1个回答
1
投票

代码:

CT_variable_Biom <- data.frame(
  name          = c( "x1", "x2", "x3", "x4", "x5"),
  high_risk     = c(1, 0, 1, 0, 0),
  medium_risk   = c(0, 1, 0, 0, 1),
  low_risk      = c(0, 0, 0, 1, 0),
  level_of_risk = c("high", "medium", "high", "low", "medium"),
  Biomarker     = c(0.50, 0.10, 0.50, 0.50, 0.50)
)

medium_risk <- subset(CT_variable_Biom, CT_variable_Biom$level_of_risk=="medium")
False_Negatives <- subset(medium_risk, Biomarker<0.25)

数据框属性

medium_risk
和数据集
medium_risk
之间出现混淆。

下面的代码有效:

medium_risk_df  <- subset(CT_variable_Biom, CT_variable_Biom$level_of_risk=="medium")
subset(medium_risk_df  , medium_risk_df$Biomarker   < 0.25) 
© www.soinside.com 2019 - 2024. All rights reserved.