Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按组获取变量类型的列表_R - Fatal编程技术网

R 按组获取变量类型的列表

R 按组获取变量类型的列表,r,R,我知道如何通过以下方式获得变量类型列表: unlist(lapply(dat, class)) 但是,有没有一种方法可以只返回一个类的变量(例如factors)或者将完整列表按类分组?我希望能够快速识别所有数值变量、因子等。举个例子: mtcars$vs <- factor(mtcars$vs) mtcars$am <- factor(mtcars$am) mtcars$gear <- factor(mtcars$gear) mtcars$carb <- factor(

我知道如何通过以下方式获得变量类型列表:

unlist(lapply(dat, class))
但是,有没有一种方法可以只返回一个类的变量(例如factors)或者将完整列表按类分组?我希望能够快速识别所有数值变量、因子等。举个例子:

mtcars$vs <- factor(mtcars$vs)
mtcars$am <- factor(mtcars$am)
mtcars$gear <- factor(mtcars$gear)
mtcars$carb <- factor(mtcars$carb)

unlist(lapply(mtcars, class))
  mpg       cyl      disp        hp      drat        wt      qsec        vs        am      gear      carb 
"numeric" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric"  "factor"  "factor"  "factor"  "factor" 

mtcars$vs您可以使用
dplyr::select_if()
根据列的结构选择列

require(tidyverse)
钻石%>%
选择_如果(是系数)
#A tibble:53940 x 3
切割颜色清晰度
1理想E SI2
2高级E SI1
3良好的E VS1
4高级I VS2
5良好的J SI2
6非常好的J VVS2
很好,我是VVS1
8非常好的H SI1
9公允价值VS2
10非常好的H VS1
# ... 还有53930行

请展示一个具有预期输出的可复制小示例。
x=unlist(lapply(mtcars,class));x[x==“系数”]
?所需的输出仍然不清楚。。。可能
拆分(名称(x),x)
?顺便说一句,你可能想看看
?sapply
。你可以使用
is.factor
is.numeric
等来识别哪些列是factor、numeric等。另外,不要使用
unlist(lappy(…,
),而使用
sapply
sapply(数据,is.factor)
然后将那些
为真的列子集。您可以对结果进行
排序
require(tidyverse)

diamonds %>% 
  select_if(is.factor)

# A tibble: 53,940 x 3
   cut       color clarity
   <ord>     <ord> <ord>  
 1 Ideal     E     SI2    
 2 Premium   E     SI1    
 3 Good      E     VS1    
 4 Premium   I     VS2    
 5 Good      J     SI2    
 6 Very Good J     VVS2   
 7 Very Good I     VVS1   
 8 Very Good H     SI1    
 9 Fair      E     VS2    
10 Very Good H     VS1    
# ... with 53,930 more rows