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)
第二种情况如何保留名称?
[默认情况下,使用提取数据框时的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)
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |