当只有一列时,如何获取具有名称的数据框的第一行?

Dan*_*iel 9 r vector dataframe

我遇到了以R为基数的意外行为。

我想以其同名作为向量来检索数据框的第一行,并且这种通用方法在大多数情况下都可以完美地工作。

df = data.frame(A=c(12,13), B=c(24,25))
unlist(df[1,]) #class=numeric
#    A  B
#   12 24
Run Code Online (Sandbox Code Playgroud)

但是,当数据帧仅由一列组成时,结果将强制为一个未命名向量:

df = data.frame(A=c(12,13))
unlist(df[1,]) #class=numeric too
# 12
Run Code Online (Sandbox Code Playgroud)

第二种情况如何保留名称?

Ron*_*hah 5

[默认情况下,使用提取数据框时的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"
Run Code Online (Sandbox Code Playgroud)

如我们所见,df2被强制为向量。使用drop = FALSE会将其保留为数据框,而不会删除尺寸。

df2[1,, drop = FALSE]
#   A
#1 12

class(df[1,, drop = FALSE])
#[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)