以下表为例,如何仅筛选"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