r-如何按特定类型筛选变量



以下表为例,如何仅筛选"chr"类型的列?例如,我希望看到一个仅包含字符串变量的列表:
例如:木材chr

dat <- read.table(text = " Timber apcalc    admit       num
   pine        0        0         7
   pine        0        1         1
   oak         1        0         3
   olive       1        1         7
   olive       0        0         5
   oak         0        1         1
   pine        1        0         0
   pine        1        1         6", header = TRUE)

要在数据帧中为您提供一个字符变量(列)列表,请使用:

sapply(dat[sapply(dat, is.character)],class)

在这种情况下,它给出:

named list()

然而,这并没有得到期望的结果。使用str(dat),您可以获得有关整个数据帧中的变量(列)的更多信息,这将给出:

'data.frame':   8 obs. of  4 variables:
 $ timber: Factor w/ 3 levels "oak","olive",..: 3 3 1 2 2 1 3 3
 $ apcalc: int  0 0 1 1 0 0 1 1
 $ admit : int  0 1 0 1 0 1 0 1
 $ num   : int  7 1 3 7 5 1 0 6

正如您所看到的,数据集中没有字符变量。使用时:

sapply(dat[sapply(dat, is.factor)],class)

它给出:

  timber 
"factor" 

您可以将is.numeric函数与sapply:结合使用

dat[sapply(dat, is.numeric)]
  apcalc admit num
1      0     0   7
2      0     1   1
3      1     0   3
4      1     1   7
5      0     0   5
6      0     1   1
7      1     0   0
8      1     1   6

最新更新