[refactor]: merge multiple models into singular file for standard output

オープン
#457 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
活発
技術スタック
r
領域
data

調査の方向性

Start by reading the standard-output code that creates the tables and figures, and trace where it currently passes a list of data frames; the issue does not name specific files or tests. Check whether those data frames share a schema and how the outputs consume them. Done means the outputs use a single data frame and the package's relevant tests pass.

索引モデルが issue の本文から書いたものです。

説明

We should feed in a single df to all tables and figures rather than a list. Especially to aid in memory issues. See rationale below:

Memory wise, it is more efficient to have a dataframe rather than a list. I am thinking that if we actually move to parquet files/databases that the list of dataframes would be the least efficient way to store this information in R. And, according to Gemini

A single consolidated data frame is significantly more memory-efficient and performant than a list of many small data frames, assuming the data frames share the same schema. Every R object carries structural overhead (class definitions, attributes, dimensions, and names). If you store thousands of small data frames in a list, R maintains thousands of separate attribute vectors and column names. Consolidating into one table collapses that metadata into a single set. R's vector engine operates on contiguous blocks of memory. Iterating over elements in a list (e.g., via lapply() or purrr::map()) incurs call-stack overhead and traverses fragmented pointers across the heap, whereas column operations on a single data frame utilize SIMD vectorization and cache locality. The R garbage collector tracks every allocated node (Vcells and Ncells). Having a large list of separate data frames balloons the total count of distinct objects, forcing the garbage collector to run frequently and cause execution pauses.
A list of data frames is only preferable if:

  1. The structures differ: The tables do not share common columns or types, making a combined table sparse or full of NA padding.
  2. Independent lifecycle: You frequently delete, update, or process chunks independently and want to let R selectively garbage-collect individual pieces without rewriting a massive master table.

Originally posted by @kellijohnson-NOAA in #455

主要言語
R
スター
20
フォーク
10
平均マージ
4日 48分
マージ済み PR(30日)
25

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

nmfs-ost/stockplotr のほかの issue

nmfs-ost/stockplotr の issue をすべて見る

似ている issue

R の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。