通过R中的数字列选择数据帧

通过R中的数字列选择数据帧,r,dataframe,R,Dataframe,这在python中很容易做到,但在R中却把我绊倒了 numeric_cols<-data_all %>% select_if(is.numeric) columns <-colnames(numeric_cols) data_all[colnames] # returns dataframe selection data_all[which(rowSums(data_all[colnames]) > 300),] 返回 <NA><NA><

这在python中很容易做到,但在R中却把我绊倒了

numeric_cols<-data_all %>% select_if(is.numeric)
columns <-colnames(numeric_cols)
data_all[colnames] # returns dataframe selection

data_all[which(rowSums(data_all[colnames]) > 300),]
返回

<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>

我该如何在R

中实现这一点尝试一下:

numeric_cols <- data_all %>%
    select_if(is.numeric)

num_cols <- names(numeric_cols)

data_all <- data_all %>%
    select(num_cols) 

data_all$row_sum <- rowSums(data_all)

data_all <- data_all %>%
    filter(row_sum > 300)
numeric\u cols%
如果(为数值型),请选择

num_cols如果不知道确切的问题要求和可复制的代码,回答您的问题有点困难。 这就是你想要的吗

numeric_cols<-data_all %>% select_if(is.numeric)
columns <-colnames(numeric_cols)

data_all<-data_all[columns] # returns dataframe selection

data_all[rowSums(data_all[columns] > 300),]
numeric\u cols%select\u if(is.numeric)

列您可以将
sapply
is.numeric
一起使用,如下所示:

#分配一个数据集
数据A C D
#R> 150
#R> 2350
#R> 3700
然后,如果只需要总和大于300的行,则可以执行类似操作:

dat[rowSums(dat[sappy(dat,is.numeric)])>300,]
#R> A、B、C、D
#R> 2真2 350
#R> 3假3700
没有非数值列的解决方案是:

dat 300,]
#R> A C D
#R> 2350
#R> 3700

在本例中,使用名为
data\u all
的数据帧。警告提示您使用了名为
data\u wideALL
的数据帧。您是否需要
data\u wideALL[rowSums(data\u wideALL[colnames])>300]
?(此处不需要
哪个
)为了让我们帮助您,请提供一个。例如,要生成最小数据集,可以使用
head()
subset()
或索引。然后使用
dput()
给我们一些可以立即放入R的东西。另外,请确保你知道该怎么做。有关更多信息,请访问Stack Overflow。非常感谢。
numeric_cols<-data_all %>% select_if(is.numeric)
columns <-colnames(numeric_cols)

data_all<-data_all[columns] # returns dataframe selection

data_all[rowSums(data_all[columns] > 300),]