基于行值删除R data.frame列

基于行值删除R data.frame列,r,dataframe,shiny,R,Dataframe,Shiny,我有这样的数据帧设置: dfRiskChanges <<- data.frame(-1, -1, -1, -1, -1, -1, -1, -1) colnames(dfRiskChanges) <<- c('Funcational', 'Steroid', 'HxCHF', 'SOB', 'HxCOPD', 'Smoker', 'DMAll', 'HTNMed') dfRiskChanges.new <- d

我有这样的数据帧设置:

dfRiskChanges <<- data.frame(-1, -1, -1, -1, -1, -1, -1, -1)
colnames(dfRiskChanges) <<- c('Funcational', 'Steroid', 'HxCHF', 'SOB',
                            'HxCOPD', 'Smoker', 'DMAll', 'HTNMed')
dfRiskChanges.new <- dfRiskChanges[dfRiskChanges$units != -1, ]
现在我想删除值为-1的所有列

我一直在尝试这样的事情:

dfRiskChanges <<- data.frame(-1, -1, -1, -1, -1, -1, -1, -1)
colnames(dfRiskChanges) <<- c('Funcational', 'Steroid', 'HxCHF', 'SOB',
                            'HxCOPD', 'Smoker', 'DMAll', 'HTNMed')
dfRiskChanges.new <- dfRiskChanges[dfRiskChanges$units != -1, ]

一切都没有成功。任何帮助都将不胜感激

让我们添加另一个具有不同值的列:

>dfRiskChanges$NoSmoke=0
> dfRiskChanges
  Funcational Steroid HxCHF SOB HxCOPD Smoker DMAll HTNMed NoSmoke
1          -1      -1    -1  -1     -1     -1    -1     -1       0
接下来,只返回其中没有-1的列:

> df2=dfRiskChanges[!grepl(-1,dfRiskChanges)] #picks out all columns that don't contain -1
> df2
  NoSmoke
1       0
使用dplyr中的select_if函数,我对代码做了如下修改

dfRiskChanges <- data.frame(
  'Funcational' = -1,
  'Steroid' = -1,
  'HxCHF' = -1,
  'SOB' = -1,
  'HxCOPD' = -1, 
  'Smoker' = 1.983131,
  'DMAll' = -1,
  'HTNMed' = 0.6438011
  )

library(dplyr)
dfRiskChanges %>% select_if(function(col) sum(col) != -1)

为什么要使用列的长度始终为1?我将示例中的0更改为-1,效果非常好!非常感谢。
dfRiskChanges <- data.frame(
  'Funcational' = -1,
  'Steroid' = -1,
  'HxCHF' = -1,
  'SOB' = -1,
  'HxCOPD' = -1, 
  'Smoker' = 1.983131,
  'DMAll' = -1,
  'HTNMed' = 0.6438011
  )

library(dplyr)
dfRiskChanges %>% select_if(function(col) sum(col) != -1)