我遇到了以R为基数的意外行为。
我想使用其colnames作为向量来检索数据框的第一行,并且这种通用方法在大多数情况下都可以正常工作。
df = data.frame(A=c(12,13), B=c(24,25))
unlist(df[1,]) #class=numeric
# A B
# 12 24
但是,当数据帧仅由一列组成时,结果将强制为一个未命名向量:
df = data.frame(A=c(12,13))
unlist(df[1,]) #class=numeric too
# 12
第二种情况下如何保留名字?
[
默认情况下,使用提取数据框时的drop
参数是TRUE
。
从 ?Extract
drop-如果为TRUE,则结果强制为最小尺寸。
您也可以在提取行后检查两个数据框的类。
df1 = data.frame(A=c(12,13), B=c(24,25))
df2 = data.frame(A=c(12,13))
class(df1[1, ])
#[1] "data.frame"
class(df2[1, ])
#[1] "numeric"
如我们所见,df2
被强制为向量。使用drop = FALSE
会将其保留为数据框,而不会删除尺寸。
df2[1,, drop = FALSE]
# A
#1 12
class(df[1,, drop = FALSE])
#[1] "data.frame"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句