1

そのため、過去 1 時間程度、文字ベクトルのサブセットを取得しようとしてきました。これを機能させるための私の(もがきの)試みで、Rの興味深い特性に遭遇しました。データは(JSON解析後)次の形式です

[[1]]
[[1]]$business_id
[1] "rncjoVoEFUJGCUoC1JgnUA"

[[1]]$full_address
[1] "8466 W Peoria Ave\nSte 6\nPeoria, AZ 85345"

[[1]]$open
[1] TRUE

[[1]]$categories
[1] "Accountants"           "Professional Services" "Tax Services"         
[4] "Financial Services"   

[[1]]$city
[1] "Peoria"

[[1]]$review_count
[1] 3

[[1]]$name
[1] "Peoria Income Tax Service"

[[1]]$neighborhoods
list()

[[1]]$longitude
[1] -112.2416

[[1]]$state
[1] "AZ"

[[1]]$stars
[1] 5

[[1]]$latitude
[1] 33.58187

[[1]]$type
[1] "business"

これが私が使用しているコードです

#!/usr/bin/Rscript

require(graphics)
require(RJSONIO)

parsed_data <- lapply(readLines("yelp_phoenix_academic_dataset/yelp_academic_dataset_business.json"), fromJSON)

#parsed_data[,c("categories")]
print(parsed_data[1])

カテゴリ列以外のすべてを削除しようとしていたときに、この興味深い動作に遭遇しました

print(parsed_data[1])
print(parsed_data[1][1])
print(parsed_data[1][1][1][1][1][1])

すべてが同じ出力を生成します (上記のもの)。何故ですか?

4

2 に答える 2

4

[これがとの違い[[です。これらをオンラインで検索するのは難しいですが?'['、ヘルプが表示されます。

でリストにインデックスを付けると[、リストが返されます。

list(a=1:10, b=11:20)[1]
## $a
##  [1]  1  2  3  4  5  6  7  8  9 10

これは 1 つの要素のリストであるため、操作をもう一度繰り返しても同じ値になります。

list(a=1:10, b=11:20)[1][1]
## $a
##  [1]  1  2  3  4  5  6  7  8  9 10

[[要素を含むリストではなく、要素を返します。また、単一のインデックスのみを受け入れます ([ベクトルを受け入れます)。

list(a=1:10, b=11:20)[[1]]
##  [1]  1  2  3  4  5  6  7  8  9 10

そして、この操作はリストではべき等ではありません:

list(a=1:10, b=11:20)[[1]][[1]]
## [1] 1
于 2013-05-24T02:50:54.030 に答える