Как скопировать вложенный список JSON для вопроса? - PullRequest
0 голосов
/ 07 февраля 2019

Я ищу помощь в списке JSON, который я извлек с помощью jsonlite.В этот список включены дополнительные списки, а также df.Как мне проще всего скопировать контент в SO, чтобы опубликовать справку?Кроме того, некоторые данные являются конфиденциальными, поэтому я надеюсь, что есть решение, которое может рандомизировать значения или позволить мне легко манипулировать ими.

1 Ответ

0 голосов
/ 07 февраля 2019

Как вы знаете, вы можете анализировать данные JSON с помощью fromJSON()

Чтобы получить доступ к элементам в проанализированных данных JSON, вы используете тот же метод, что и для доступа к другим вещам, то есть к функции доступа R $, не забывая, что это может занять несколько слоев, например your_data$details$result$locationHierarchy$city

Вот несколько советов, которые помогут вам легко скопировать ваши данные в виде текста (например, для копирования в вопрос SO)

Давайте возьмем некоторые данные

some_data <- iris[1, ]
some_data

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa

Вы можете преобразовать любой объект R (например, кадр данных, вектор, элемент и т. Д.) В формат JSON, используя toJSON()

some_data_as_JSON <- toJSON(some_data)
some_data_as_JSON

# [{"Sepal.Length":5.1,"Sepal.Width":3.5,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"}] 

В приведенном выше примере, если вы попытаетесь скопировать / вставить данные JSON, возвращенные в консоль R, произойдет ошибка, поскольку специальные символы не экранированы должным образом.Однако, есть простой способ обойти это, используя dput()

dput(some_data_as_JSON)

# structure("[{\"Sepal.Length\":5.1,\"Sepal.Width\":3.5,\"Petal.Length\":1.4,\"Petal.Width\":0.2,\"Species\":\"setosa\"}]", class = "json")

Теперь вы можете скопировать / вставить этот вывод и назначить его как объект R!(так что это идеально подходит для SO вопроса)

При анонимизации данных вы можете попробовать использовать функцию рандомизации, такую ​​как runif(), для генерации случайных данных для числовых типов данных.Для персонажей вы можете попробовать gsub() один символ за другим случайным образом (это не будет сильным анонимизацией, но это может быть хорошо, в зависимости от того, что вы пытаетесь сделать).Или вы можете генерировать случайные строки, используя

library(stringi)
stri_rand_strings(3, 5, pattern = "[A-Za-z0-9]")

Последний совет: SO склонен предпочитать маленькие воспроизводимые примеры (в отличие от больших), поэтому, возможно, лучше всего было бы взять небольшое подмножествоВаши данные для копирования в SO, или, возможно, даже создать совершенно новый объект (достаточно маленького)

...