2015-11-12 3 views
5

同様の質問にこのサイト上の他の回答から、とhttp://www.r-tutor.com/r-introduction/data-frame/data-frame-column-vectorのようなページから、私が同じ結果が得られるはずdata.framedata[ , "col"]data$colから変数を抽出しているようです。しかし、今、私はExcelでいくつかのデータを持っている:今私は、データフレームから単一の変数を抽出

library(readxl) 
data <- read_excel("data.xlsx", "Sheet 1") 

:)

LU Urban_LU LU_Index Urban_LU_index 
Residential Residential 2 0 
Rural residential Residential 3 0 
Commercial Commercial 4 1 
Public institutions including education Industrial 5 1 
Industry Industrial 7 2 

を、私はreadxlパッケージからread_excelでそれを読みます[または$を使用して:

data[ , "LU"] 
# Source: local data frame [5 x 1] 
# 
#          LU 
#          (chr) 
# 1        Residential 
# 2      Rural residential 
# 3        Commercial 
# 4 Public institutions including education 
# 5        Industry 

data$LU 
# [1] "Residential"        "Rural residential"      
# [3] "Commercial"        "Public institutions including education" 
# [5] "Industry"        

length(data[ , "LU"]) 
# [1] 1 
length(data$LU) 
# [1] 5 

class(data) 
# [1] "tbl_df"  "tbl"  "data.frame" 

class(data[ , "LU"]) 
# [1] "tbl_df"  "data.frame" 

class(data$LU) 
# [1] "character" 
> 

ので[ , "col"]$colの違いは何でしょう:

また、read_excelから得られたデータのクラスや抽出の異なる2つのモードから得られるデータは、不審な私が見つけていますか?私はマニュアルから何かを見逃しているのですか、これは特別なケースですか?また、tbl_dftblクラス識別子とは何ですか?私は彼らが私の混乱の原因だと思っています、どういう意味ですか?クラスtbl_dfreadxl::read_xl戻っ出力が不十分?read_xlに文書らしいという事実

:拡張コメントの

+9

はい、これは特殊なケースです。あなたはハドリーの世界に入りました。あなたが 'data < - as.data.frame(data)'を実行した場合、 'data [、" LU "]'を実行するときには良いはずです。 'readxl'を使う必要があるためです。 –

+4

'data'は"本当の "data.frameではありません。 –

+0

右 - 確かにそれは動作させる。簡潔さのために、私は元の質問から、readxlのドキュメントが返り値の型を明示的に文書化していないことが疑わしいことが既に分かっていることを忘れてしまった。そこには何が起こっているのかを私が読むことができるどこかにありますか? – Roel

答えて

1

より。この動作はいえannouncement of readxl on the RStudio blogで言及されました:

tbl_dfの詳細については

「[read_xl R]クラスc("tbl_df", "tbl", "data.frame")で出力をeturns」、我々はdplyrヘルプページを参照してくださいする必要があります。 のメソッドセクションの?dplyr::tbl_dfでは、 "tbl_dfは2つの重要な基本メソッドを実装しています。"を簡略化(ドロップ)しないため、常に返します。

は、より多くの背景については、?[.data.framedrop引数について読みました。

関連Q & A:Extract a dplyr tbl column as a vectorおよびBest practice to get a dropped column in dplyr tbl_df

the 'original' issue on github、そこに議論を参照してください。

関連する問題