我有一个只有一列和rownames的DataFrame
> head(UMIpCells_df, n=10)
UMIs
MB04_GATAACTGGCCT 4571.266
MB04_ACCCTGTCATTT 4534.992
MB04_GTAAGACGAATG 4793.417
MB04_AGGCTATTCCAA 4786.393
MB04_ATTATCTGATTT 4478.233
MB04_CCCGGGTCTGCC 4765.347
MB04_AAACGAGCTGAC 4571.253
MB04_TGTTGCTTTTCG 4167.119
MB04_ACGTCCCCCAAA 4778.961
MB04_GTCGCGCAGTTC 4664.638
我希望将第1行分配为5行,但我得到了一个数字向量:
> UMIpCells_df[1:5,]
[1] 4571.266 4534.992 4793.417 4786.393 4478.233
但是,如果我向UMIpCell_df添加一个额外的列,则该子集返回一个df。 我发现要从单列数据帧返回一个df,我必须添加: drop = False
> UMIpCells_df[(1:5), ,drop=FALSE]
UMIs
MB04_GATAACTGGCCT 4571.266
MB04_ACCCTGTCATTT 4534.992
MB04_GTAAGACGAATG 4793.417
MB04_AGGCTATTCCAA 4786.393
MB04_ATTATCTGATTT 4478.233
然而,我发现这个奇怪且基本的,因为它是我想要了解为什么最简单的df(仅1列)的子集必须与任何其他DataFrame(> 1列)的子集不同。希望你不要被这个问题的基础所冒犯。
答案 0 :(得分:0)
考虑使用tibbles和data_frame
而不是标准的data.frame。虽然不是基础R,但dplyr
这样的包有助于“纠正”您注意到的某些行为,这些行为可能不再有用。
点击这里的小插图: https://cran.r-project.org/web/packages/tibble/vignettes/tibble.html
这里是对数据帧的简单比较以及子集化时的一些比较: http://r4ds.had.co.nz/introduction-2.html#tibbles
答案 1 :(得分:0)
head(UMIpCells_df, n=5)
也是一个数据框,所以您可以这样做:
new.df <- head(UMIpCells_df, n=5)