我有一个简单的问题,这让我今天早上很奇怪.如何获得显示数据帧列类的向量?
当我计算这个时,我认为它应该有效,但事实并非如此.我对结果更加惊讶,并不理解结果.
这是我的例子:
Example = data.frame(
Col1 = c(2,5,10),
Col2 = c("Hello", "I am a", "Factor"),
Col3 = c(T,F,T))
str(Example)
# 'data.frame': 3 obs. of 3 variables:
# $ Col1: num 2 5 10
# $ Col2: Factor w/ 3 levels "Factor","Hello",..: 2 3 1
# $ Col3: logi TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
所以我有一个数据框,其中包含一个数字列,一个因子列和一个逻辑列,并且class()apply函数中的命令结果为character.任何人都可以解释我为什么以及如何获得类的向量?
apply(Example, 2, class)
# Col1 Col2 Col3
# "character" "character" "character"
Run Code Online (Sandbox Code Playgroud)
apply 不适合你,因为在文档中:
If ‘X’ is not an array but an object of a class with a non-null
‘dim’ value (such as a data frame), ‘apply’ attempts to coerce it
to an array via ‘as.matrix’ if it is two-dimensional (e.g., a data
frame) or via ‘as.array’.
Run Code Online (Sandbox Code Playgroud)
所以你的数据框成为一个矩阵,列类设置为可以代表你的列的最简单的类 - 在这种情况下是一个字符矩阵:
> as.matrix(Example)
Col1 Col2 Col3
[1,] " 2" "Hello" " TRUE"
[2,] " 5" "I am a" "FALSE"
[3,] "10" "Factor" " TRUE"
Run Code Online (Sandbox Code Playgroud)
使用 sapply
> sapply(Example,class)
Col1 Col2 Col3
"numeric" "factor" "logical"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |