2016-01-12 214 views
2

我已經使用installed.packages()在R中查看已安裝的軟件包。我想通過使用installed.packages()[c("Package","Version")]從輸出中提取兩個列,「軟件包」和「版本」,但沒有顯示出我期望的結果。但是,如果我把一個「」公正‘包’(之前installed.packages()[,c("Package","Version")])它的作品!爲什麼語句中的「」有必要嗎?R,找到已安裝的軟件包

回答

2

。您需要給? Extract一看,以瞭解R中的索引。以下是有關如何明白你正在尋找的對象的結構:

> class(installed.packages()) 
[1] "matrix" 
> dim(installed.packages()) 
[1] 173 16 
> str(installed.packages()) 
chr [1:173, 1:16] "aws.s3" "aws.signature" "BH" "bit" "bit64" ... 
- attr(*, "dimnames")=List of 2 
    ..$ : chr [1:173] "aws.s3" "aws.signature" "BH" "bit" ... 
    ..$ : chr [1:16] "Package" "LibPath" "Version" "Priority" ... 

那麼,是什麼,它告訴我們的是,對象是一個矩陣,用173行和16列。

  • 若要從矩陣中提取,請使用符號matrix[rows, columns]
  • 要獲取所有行但只有一些列,可以將其設置爲matrix[, columns]
  • 要獲得所有列,但一些行,你可以通過快捷鍵,爲matrix[rows,]

你可能期待的對象是一個data.frame來代替。 data.frame允許您可能更熟悉的各種其他形式的索引/提取:

> str(mtcars["mpg"]) 
'data.frame': 32 obs. of 1 variable: 
$ mpg: num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... 
> str(mtcars[["mpg"]]) 
num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... 
> str(mtcars[, "mpg"]) 
num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... 
> str(mtcars$mpg) 
num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...