簡體   English   中英

如何從 data.frame 中提取單個列作為 data.frame?

[英]How do I extract a single column from a data.frame as a data.frame?

假設我有一個 data.frame:

df <- data.frame(A=c(10,20,30),B=c(11,22,33), C=c(111,222,333))
  A  B  C
1 10 11 111
2 20 22 222
3 30 33 333

如果我選擇兩個(或更多)列,我會得到一個 data.frame:

x <- df[,1:2]
   A  B
 1 10 11
 2 20 22
 3 30 33

這就是我要的。 但是,如果我只選擇一列,我會得到一個數字向量:

x <- df[,1]
[1] 1 2 3

我嘗試使用 as.data.frame(),它不會更改兩列或多列的結果。 對於一列,它確實返回一個 data.frame,但不保留列名:

x <- as.data.frame(df[,1])
     df[, 1]
1       1
2       2
3       3

我不明白為什么它會這樣。 在我看來,如果我提取一兩列或十列,應該不會有什么不同。 IT 應該始終返回一個向量(或矩陣)或始終返回一個 data.frame(具有正確的名稱)。 我錯過了什么? 謝謝!

注意:這不是關於矩陣的問題的重復,因為 matrix 和 data.frame 在 R 中是根本不同的數據類型,並且可以與 dplyr 不同地工作。 有幾個答案適用於 data.frame 但不適用於矩陣。

使用drop=FALSE

> x <- df[,1, drop=FALSE]
> x
   A
1 10
2 20
3 30

從文檔中(參見?"[" ),您可以找到:

如果 drop=TRUE,則結果被強制轉換為可能的最低維度。

省略, :

x <- df[1]

   A
1 10
2 20
3 30

?"["的幫助頁面:

[ 索引類似於原子向量並選擇指定元素的列表。

數據框是一個列表。 列是它的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM