#python #r #r-markdown #rstudio #reticulate
Вопрос:
У нас есть код на python, который принимает файл excel в качестве входных данных и обрабатывает его в файл json для визуализации на javascript. Чтобы еще больше усложнить это, javascript (и куча другого кода) отображается с помощью rmarkdown. Что действительно странно, так это то, что когда я пытаюсь либо создать весь сценарий целиком, либо использовать функции в скрипте python source_python
, либо запустить файл непосредственно в rstudio, файл json не заполняется должным образом; но он отлично работает, когда я запускаю сценарий в vscode. Я действительно хочу, чтобы это работало в rmarkdown/rstudio, чтобы этот файл json создавался автоматически; теперь мне нужно запустить его вручную в jscode, прежде чем я смогу связать rmarkdown.
Теперь я мог бы просто переписать это в R, но, поскольку я предполагаю, что эта проблема возникнет в будущем, я хотел бы разобраться в ней.
Поэтому я прочитал в файле Excel в виде фрейма данных, который выглядит следующим образом:
import pandas as pd from pandas import Timestamp pd.DataFrame(data={'Supplier': {412: 'QUEST DIAGNOSTICS', 317: 'MCKESSON', 207: 'GE HEALTHCARE', 570: 'QUEST DIAGNOSTICS ', 495: 'SANDIA NATIONAL LABORATORIES'}, 'Title': {412: 'Quest Diagnostics data breach: Nearly 12 million patients had ...', 317: "McKesson subsidiary exposed over 10,000 patients' information via ...", 207: 'Cyber vulnerability discovered in GE Healthcare radiological ...', 570: "Ransomware attack on Quest's ReproSource impacts data of 350K ...", 495: "US nuclear weapons agency target of major cyberattack;A governmentofficial has described it as the 'worsthacking case in the history of America. They got into everything'"}, 'Date': {412: Timestamp('2021-05-27 00:00:00'), 317: Timestamp('2021-05-27 00:00:00'), 207: Timestamp('2021-05-27 00:00:00'), 570: Timestamp('2021-10-12 00:00:00'), 495: Timestamp('2020-12-18 00:00:00')}, 'Source': {412: '202illuminate', 317: '202illuminate', 207: '202illuminate', 570: '202illuminate', 495: 'The Independent (United Kingdom)'}, 'Schema Category': {412: 'Cyber', 317: 'Cyber', 207: 'Cyber', 570: 'Cyber', 495: 'Cyber'}, 'Rubric Score': {412: 'Medium', 317: 'High', 207: 'Medium', 570: 'Medium', 495: 'Medium'}, 'Relevant Information': {412: 'Data for nearly 12 million Quest Diagnostics patients may have been exposed', 317: "McKesson subsidiary exposed over 10,000 patients' information via ...", 207: 'Cyber vulnerability discovered in GE Healthcare radiological ...', 570: 'Oct 12, 2021 ... Approximately 350,000 patients were recently notified that their data was potentially accessed or acquired during a ransomware attack on ReproSource Fertility Diagnostics, a clinical laboratory for fertility specialists and a subsidiary of Quest Diagnostics.', 495: 'Networks hacked as part of the widespread cyberespionage attack on a number of federal agencies.'}, 'Test Supplier': {412: 'Test Supplier', 317: 'Test Supplier', 207: 'Test Supplier', 570: 'Test Supplier', 495: 'Test Supplier'} }
Затем я создаю структуру своего конечного файла json, которая выглядит следующим образом:
[{'group': 'Test Supplier', 'data': [{'label': 'Cyber', 'data': []}, {'label': 'Financial', 'data': []}, {'label': 'Foreign Influence', 'data': []}, {'label': 'Governance', 'data': []}, {'label': 'Legal/Regulatory', 'data': []}, {'label': 'Operational', 'data': []}, {'label': 'Other', 'data': []}, {'label': 'Production', 'data': []}] }]
И я хочу заполнить этот файл json с помощью этой функции:
def populate_structure(row): """help each record find its home""" global structure entry = {} start = int(row['Date'].timestamp())*1000 stop = int((row['Date'] datetime.timedelta(days=15)).timestamp())*1000 entry['timeRange'] = [start, stop] entry['val'] = row['Rubric Score'] entry['name'] = row['Supplier'] entry['desc'] = row['Title'] # ewww... group_index = structure.index([group for group in structure if group['group'] == row['Test Supplier']][0]) label_index = structure[group_index]['data'].index([label for label in structure[group_index]['data'] if label['label'] == row['Schema Category']][0]) structure[group_index]['data'][label_index]['data'].append(entry) return None
Подобный этому:
df = pre_process() structure = build_structure(df) df.apply(populate_structure,axis=1)
Функция работает так же, как и в vscode, но, похоже, ничего не делает в rstudio/r. Есть какие-нибудь мысли по этому поводу?
Результаты session_info()
:
- Session info --------------------------------------------------------------------- setting value version R version 3.6.3 (2020-02-29) os Windows 10 x64 system x86_64, mingw32 ui RStudio language (EN) collate English_United States.1252 ctype English_United States.1252 tz America/New_York date 2021-11-24 - Packages ------------------------------------------------------------------------- package * version date lib source assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.6.3) bit 4.0.4 2020-08-04 [1] CRAN (R 3.6.3) bit64 4.0.5 2020-08-30 [1] CRAN (R 3.6.3) blob 1.2.1 2020-01-20 [1] CRAN (R 3.6.3) cli 2.3.0 2021-01-31 [1] CRAN (R 3.6.3) DBI 1.1.1 2021-01-15 [1] CRAN (R 3.6.3) digest 0.6.27 2020-10-24 [1] CRAN (R 3.6.3) ellipsis 0.3.1 2020-05-15 [1] CRAN (R 3.6.3) evaluate 0.14 2019-05-28 [1] CRAN (R 3.6.3) glue 1.4.2 2020-08-27 [1] CRAN (R 3.6.3) hms 1.0.0 2021-01-13 [1] CRAN (R 3.6.3) htmltools 0.5.1.1 2021-01-22 [1] CRAN (R 3.6.3) jsonlite 1.7.2 2020-12-09 [1] CRAN (R 3.6.3) knitr 1.31 2021-01-27 [1] CRAN (R 3.6.3) lattice 0.20-41 2020-04-02 [1] CRAN (R 3.6.3) lifecycle 1.0.0 2021-02-15 [1] CRAN (R 3.6.3) magrittr 2.0.1 2020-11-17 [1] CRAN (R 3.6.3) Matrix 1.3-2 2021-01-06 [1] CRAN (R 3.6.3) openxlsx 4.2.3 2020-10-27 [1] CRAN (R 3.6.3) pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 3.6.3) png 0.1-7 2013-12-03 [1] CRAN (R 3.6.0) Rcpp 1.0.6 2021-01-15 [1] CRAN (R 3.6.3) reticulate 1.20 2021-05-03 [1] CRAN (R 3.6.3) rlang 0.4.11 2021-04-30 [1] CRAN (R 3.6.3) rmarkdown 2.7 2021-02-19 [1] CRAN (R 3.6.3) RPostgres 1.3.1 2021-01-19 [1] CRAN (R 3.6.3) sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.6.3) stringi 1.5.3 2020-09-09 [1] CRAN (R 3.6.3) stringr 1.4.0 2019-02-10 [1] CRAN (R 3.6.3) vctrs 0.3.8 2021-04-29 [1] CRAN (R 3.6.3) withr 2.4.2 2021-04-18 [1] CRAN (R 3.6.3) xfun 0.22 2021-03-11 [1] CRAN (R 3.6.3) yaml 2.2.1 2020-02-01 [1] CRAN (R 3.6.3) zip 2.1.1 2020-08-27 [1] CRAN (R 3.6.3) [1] C:/Users/benja/Documents/R/win-library/3.6 [2] C:/Program Files/R/R-3.6.3/library
Комментарии:
1. Итак, что вы пробовали в R ?
2. Я бы предпочел не переписывать его в R
3. я имел в виду, что вы помечаете r и повторяете, но показываете только код python… итак, вы используете файлы python в R с помощью reticulate, и это не работает ? было бы неплохо увидеть какой-нибудь код для этого…
4. Конечно, но R-это в основном просто
source_python("script.py")
5. Можете ли вы запустить
session_info(info = "all")
и опубликовать результаты?