Rei*_*son 10
假设foo是对象的名称,它是一个数据框,
f <- sapply(foo, is.factor)
Run Code Online (Sandbox Code Playgroud)
将该is.factor()函数应用于数据框的每个组件(列).is.factor()检查提供的向量是否是R所涉及的因素.
然后
which(f)
Run Code Online (Sandbox Code Playgroud)
会告诉你因子列的索引.f包含逻辑向量,因此您可以选择因子列via
foo[, f]
Run Code Online (Sandbox Code Playgroud)
或者选择除它们以外的所有
foo[, !f]
Run Code Online (Sandbox Code Playgroud)
这是一个例子:
> ## some dummy data
> foo <- data.frame(a = factor(1:10), b = 1:10, c = factor(letters[1:10]))
> foo
a b c
1 1 1 a
2 2 2 b
3 3 3 c
4 4 4 d
5 5 5 e
6 6 6 f
7 7 7 g
8 8 8 h
9 9 9 i
10 10 10 j
> ## apply is.factor
> f <- sapply(foo, is.factor)
> f
a b c
TRUE FALSE TRUE
> ## which are factors
> which(f)
a c
1 3
> ## select those
> foo[, f]
a c
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 f
7 7 g
8 8 h
9 9 i
10 10 j
Run Code Online (Sandbox Code Playgroud)
对数字和整数也有相同的检查,其中包括:is.numeric()和is.integer(),但是is.numeric()如果你不关心数字的类型,你只需要:
> is.numeric(1L)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
(此外is.character(),is.logical()...)