2016-12-11 7 views
0

enter code here Привет, У меня есть файл JSON, и я хочу проанализировать его в списке. Интересно, могу ли я анализировать только строки с определенной строкой? НапримерРазбирать строки JSON в список R

{"app":15c,"device_carrier":"Verizon Wireless"} 
{"app":15b,"device_carrier":"Verizon Wireless"} 
{"app":15a,"device_carrier":"Verizon Wireless"} 

, и я хочу, чтобы разобрать только те строки, которые имеют "app":15a Я хочу иметь список с последней строкой! (Проблема в том, у меня есть много данных, и мой компьютер не может разбор весь JSON-файл, и мне нужно только одно приложение)

+0

Hi Smasell, вы можете предоставить пример JSON вы хотите, чтобы разобрать, желаемых результатов, и что вы пробовали до сих пор? –

+0

Самый надежный способ - разобрать все, а затем отфильтровать список. Фильтрация перед синтаксическим анализом гораздо более утомительна, так как форматирование JSON может потенциально различаться. – MrMobster

+0

@MrMobster Да, теперь я это! Я отредактировал вопрос! Возможно ли без разбора всего файла? – Smasell

ответ

0

есть способы оптимизировать следующее, но она не может быть необходимо в вашем случае:

library(jsonlite) 
library(dplyr) 

df <- data_frame() 
jsonlite::stream_in(file("/tmp/apps.json"), function(x) { df <<- bind_rows(df, filter(x, app=="15b")) }) 

Я сделал файл, который выглядит следующим образом:

{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 
{"app":"15c","device_carrier":"Verizon Wireless"} 
{"app":"15b","device_carrier":"Verizon Wireless"} 
{"app":"15a","device_carrier":"Verizon Wireless"} 

Выполнить этот код, и вы получите:

df 
## # A tibble: 13 × 2 
##  app device_carrier 
## <chr>   <chr> 
## 1 15b Verizon Wireless 
## 2 15b Verizon Wireless 
## 3 15b Verizon Wireless 
## 4 15b Verizon Wireless 
## 5 15b Verizon Wireless 
## 6 15b Verizon Wireless 
## 7 15b Verizon Wireless 
## 8 15b Verizon Wireless 
## 9 15b Verizon Wireless 
## 10 15b Verizon Wireless 
## 11 15b Verizon Wireless 
## 12 15b Verizon Wireless 
## 13 15b Verizon Wireless