我已经知道我是否使用as.character(df[x,y])
或as.<whatever>df[x,y]
我可以每次从数据框中获取/强制我需要的东西
我似乎无法找到/弄清楚原因。详情如下。
当我访问df[1,1]
(或第1列中的任何内容)时,我得到了
df[1,1]
[1] a
Levels: a b c
但是当我访问1,3时它工作正常
> df[1,3]
[1] 10
但是当我使用as.character()
时,它可以工作。
> as.character(df[1,1])
[1] "a"
使用此行构建数据框
df = data.frame(names = c("a","b","c"), size = c(1,2,3),num = c(10,20,30) )
> df
names size num
1 a 1 10
2 b 2 20
3 c 3 30
但是在这个数据框中
imp2met = read.csv('tomet.csv', header = TRUE, sep=",",dec='.')
> imp2met
unit mult ret
1 (yd) 0.9100 (m)
2 (in) 2.5200 (cm)
3 .....
我得到1,3
的这些结果> imp2met[1,3]
[1] (m)
Levels: (c) (cm) (cm^2) ....
>
> as.character(imp2met[1,3])
[1] "(m)"
为什么&#34;随机&#34;结果如何?为什么我需要as.<whatever>()
但只有部分时间?
答案 0 :(得分:1)
data.frame
默认是将字符向量转换为因子。您可以使用参数stringsAsFactors=FALSE
此外,使用[
对数据框进行子集化时,可以添加drop=FALSE
参数以在某些情况下简化结果。