diff --git a/po/r-novice-gapminder.ja.po b/po/r-novice-gapminder.ja.po index 2bd49431..532cdf59 100644 --- a/po/r-novice-gapminder.ja.po +++ b/po/r-novice-gapminder.ja.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: i18n\n" "Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" "POT-Creation-Date: 2018-09-15 22:59:57+0900\n" -"PO-Revision-Date: 2019-07-03 06:58+0900\n" +"PO-Revision-Date: 2019-08-09 06:17+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -14200,23 +14200,23 @@ msgstr "" "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 10-functions.md in _episodes_rmd/\n" -"title: Functions Explained\n" -"teaching: 45\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I write a new function in R?\"\n" -"objectives:\n" -"- \"Define a function that takes arguments.\"\n" -"- \"Return a value from a function.\"\n" -"- \"Check argument conditions with `stopifnot()` in functions.\"\n" -"- \"Test a function.\"\n" -"- \"Set default values for function arguments.\"\n" -"- \"Explain why we should divide programs into small, single-purpose functions.\"\n" -"keypoints:\n" -"- \"Use `function` to define a new function in R.\"\n" -"- \"Use parameters to pass values into functions.\"\n" -"- \"Use `stopifnot()` to flexibly check function arguments in R.\"\n" -"- \"Load functions into programs using `source()`.\"\n" +"title: 関数について\n" +"講義: 45\n" +"練習: 15\n" +"質問:\n" +"- \"R で関数はどう書くの?\"\n" +"目標:\n" +"- \"引数を持つ関数を定義しましょう。\"\n" +"- \"関数から値を返しましょう。\"\n" +"- \"関数の中で `stopifnot()` を使って引数の状態を検査しましょう。\"\n" +"- \"関数をテストしましょう。\"\n" +"- \"関数の引数に既定値を指定しましょう。\"\n" +"- \"なぜプログラムを小さな一つの目的を持つ関数に分けるべきか説明しましょう。\"\n" +"要点:\n" +"- \"`function` を使って R で新しい関数を定義します。\"\n" +"- \"パラメーターを用いて関数に値を渡します。\"\n" +"- \"`stopifnot()` を使って R の関数の引数を柔軟に検査します。\"\n" +"- \"`source()` を使ってプログラムに関数を読み込みます。\"\n" "source: Rmd\n" "---" @@ -14228,24 +14228,20 @@ msgid "" "information later and re-run our analysis again. We may also obtain similar data\n" "from a different source in the future." msgstr "" -"If we only had one data set to analyze, it would probably be faster to load the\n" -"file into a spreadsheet and use that to plot simple statistics. However, the\n" -"gapminder data is updated periodically, and we may want to pull in that new\n" -"information later and re-run our analysis again. We may also obtain similar data\n" -"from a different source in the future." +"分析したいデータセットが一つだけなら、ファイルを表計算ソフトで読み込み、単純な統計値をプロットした方が早いでしょう。\n" +"しかし、gapmider データは定期的に更新されるので、後から新しい情報を読み込み分析し直したくなります。\n" +"また、将来的には似たようなデータを違う場所から入手することもあるでしょう。" #: r-novice-gapminder/_episodes/10-functions.md:33 msgid "" "In this lesson, we'll learn how to write a function so that we can repeat\n" "several operations with a single command." -msgstr "" -"In this lesson, we'll learn how to write a function so that we can repeat\n" -"several operations with a single command." +msgstr "この講義では関数の書き方を学ぶことで、同じ操作を一つのコマンドで繰り返せるようになります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:36 msgid "> ## What is a function?" -msgstr "> ## What is a function?" +msgstr "> ## 関数とは何でしょう?" #: r-novice-gapminder/_episodes/10-functions.md:37 msgid "" @@ -14263,30 +14259,28 @@ msgid "" "> you have written a function, you are a computer programmer." msgstr "" ">\n" -"> Functions gather a sequence of operations into a whole, preserving it for\n" -"> ongoing use. Functions provide:\n" +"> 関数は連続した操作を一つに纏め、後から使うときのために保存しておきます。\n" +"> 関数は以下の機能を提供します。:\n" ">\n" -"> * a name we can remember and invoke it by\n" -"> * relief from the need to remember the individual operations\n" -"> * a defined set of inputs and expected outputs\n" -"> * rich connections to the larger programming environment\n" +"> * 記憶可能で実行可能な名前\n" +"> * 各操作を覚える必要性からの解放\n" +"> * 入力と出力の組み合わせを定義\n" +"> * より大規模なプログラミング環境への接続性の高さ\n" ">\n" -"> As the basic building block of most programming languages, user-defined\n" -"> functions constitute \"programming\" as much as any single abstraction can. If\n" -"> you have written a function, you are a computer programmer." +"> ほとんどのプログラミング言語における基本的なブロックの構築がそうであるように\n" +"> ユーザーが定義する関数はどんな単純なことであれ抽象化する「プログラミング」により成り立ちます。\n" +"> 関数を書いた時点であなたはコンピュータープログラマーです。" # header #: r-novice-gapminder/_episodes/10-functions.md:51 msgid "## Defining a function" -msgstr "## Defining a function" +msgstr "## 関数を定義しましょう。" #: r-novice-gapminder/_episodes/10-functions.md:53 msgid "" "Let's open a new R script file in the `functions/` directory and call it\n" "functions-lesson.R." -msgstr "" -"Let's open a new R script file in the `functions/` directory and call it\n" -"functions-lesson.R." +msgstr "`functions/` ディレクトリ内に新しく functions-lesson.R と名付けた R スクリプトを作成して開きましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:57 @@ -14309,9 +14303,7 @@ msgstr "" msgid "" "Let's define a function `fahr_to_kelvin()` that converts temperatures from\n" "Fahrenheit to Kelvin:" -msgstr "" -"Let's define a function `fahr_to_kelvin()` that converts temperatures from\n" -"Fahrenheit to Kelvin:" +msgstr "華氏をケルビンに変換する `fahr_to_kelvin()` という関数を定義しましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:69 @@ -14340,16 +14332,21 @@ msgid "" "(`{}`). The statements in the body are indented by two spaces. This makes the\n" "code easier to read but does not affect how the code operates." msgstr "" -"We define `fahr_to_kelvin()` by assigning it to the output of `function`. The\n" -"list of argument names are contained within parentheses. Next, the\n" -"[body]({{ page.root }}/reference/#function-body) of the function--the\n" -"statements that are executed when it runs--is contained within curly braces\n" -"(`{}`). The statements in the body are indented by two spaces. This makes the\n" -"code easier to read but does not affect how the code operates." +"`fahr_to_kelvin()` を定義するには、`fahr_to_kelvin` に `function` の出力を指定します。\n" +"引数名の一覧は括弧の中に書きます。\n" +"次に関数の[本文 (body)]({{ page.root }}/reference/#function-body) として\n" +"走らせた時の実行内容を波括弧 (`{}`) の中に記述します。\n" +"本文はスペース二つでインデントしておきます。\n" +"これによりコードの操作内容を変更せずに可読性を向上させます。" #: r-novice-gapminder/_episodes/10-functions.md:84 msgid "It is useful to think of creating functions like writing a cookbook. First you define the \"ingredients\" that your function needs. In this case, we only need one ingredient to use our function: \"temp\". After we list our ingredients, we then say what we will do with them, in this case, we are taking our ingredient and applying a set of mathmatical operators to it. " -msgstr "It is useful to think of creating functions like writing a cookbook. First you define the \"ingredients\" that your function needs. In this case, we only need one ingredient to use our function: \"temp\". After we list our ingredients, we then say what we will do with them, in this case, we are taking our ingredient and applying a set of mathmatical operators to it. " +msgstr "" +"関数を作ることは料理本を書くようなものだと思うといいでしょう。\n" +"まず、必要な「材料」を決めます。\n" +"今回の関数に必要な材料は「temp」一つだけです。\n" +"材料を列挙したら、材料を使って何をするかを決めます。\n" +"今回は材料に対して数学的な演算を行います。" #: r-novice-gapminder/_episodes/10-functions.md:86 msgid "" @@ -14359,11 +14356,9 @@ msgid "" "statement]({{ page.root }}/reference/#return-statement) to send a result back to\n" "whoever asked for it." msgstr "" -"When we call the function, the values we pass to it as arguments are assigned to\n" -"those variables so that we can use them inside the function. Inside the\n" -"function, we use a [return\n" -"statement]({{ page.root }}/reference/#return-statement) to send a result back to\n" -"whoever asked for it." +"関数を呼び出す時、引数に指定した値は関数内で用いられる変数に与えられます。\n" +"関数の中では関数を呼び出した相手に結果を送るために [return\n" +"文]({{ page.root }}/reference/#return-statement) を用います。" #: r-novice-gapminder/_episodes/10-functions.md:93 msgid "" @@ -14374,18 +14369,17 @@ msgid "" "> return statement." msgstr "" ">\n" -"> One feature unique to R is that the return statement is not required.\n" -"> R automatically returns whichever variable is on the last line of the body\n" -"> of the function. But for clarity, we will explicitly define the\n" -"> return statement." +"> return 文が不要なことは R の変わった特徴の一つです。\n" +"> R では関数の本文の最終行に記述された変数が自動的に返り値になります。\n" +"> しかし、わかりやすくするために return 文を明示的に記述します。" #: r-novice-gapminder/_episodes/10-functions.md:101 msgid "" "Let's try running our function.\n" "Calling our own function is no different from calling any other function:" msgstr "" -"Let's try running our function.\n" -"Calling our own function is no different from calling any other function:" +"関数を実行してみましょう。\n" +"自分の関数を呼び出す方法は他の関数を呼び出す方法と同じです。" # code block #: r-novice-gapminder/_episodes/10-functions.md:105 @@ -14396,7 +14390,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# freezing point of water\n" +"# 水の凝固点\n" "fahr_to_kelvin(32)\n" "~~~" @@ -14421,7 +14415,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# boiling point of water\n" +"# 水の沸点\n" "fahr_to_kelvin(212)\n" "~~~" @@ -14459,15 +14453,13 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Write a function called `kelvin_to_celsius()` that takes a temperature in\n" -"> Kelvin and returns that temperature in Celsius.\n" +"> ケルビンを入力するとセ氏を返す `kelvin_to_celsius()` という関数を書いて下さい。\n" ">\n" -"> Hint: To convert from Kelvin to Celsius you subtract 273.15\n" +"> ヒント: ケルビンをセ氏に換算するには 273.15 を引きます。\n" ">\n" -"> > ## Solution to challenge 1\n" +"> > ## チャレンジ1の解答\n" "> >\n" -"> > Write a function called `kelvin_to_celsius` that takes a temperature in Kelvin\n" -"> > and returns that temperature in Celsius\n" +"> > ケルビンを入力するとセ氏を返す `kelvin_to_celsius()` という関数を書いて下さい。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -14481,23 +14473,19 @@ msgstr "" # header #: r-novice-gapminder/_episodes/10-functions.md:155 msgid "## Combining functions" -msgstr "## Combining functions" +msgstr "## 関数を組み合わせましょう" #: r-novice-gapminder/_episodes/10-functions.md:157 msgid "" "The real power of functions comes from mixing, matching and combining them\n" "into ever-larger chunks to get the effect we want." -msgstr "" -"The real power of functions comes from mixing, matching and combining them\n" -"into ever-larger chunks to get the effect we want." +msgstr "関数の真髄を発揮するのは、関数を混ぜ合わせ組み合わせてより多きな塊にすることで、望み通りの効果を得る時です。" #: r-novice-gapminder/_episodes/10-functions.md:160 msgid "" "Let's define two functions that will convert temperature from Fahrenheit to\n" "Kelvin, and Kelvin to Celsius:" -msgstr "" -"Let's define two functions that will convert temperature from Fahrenheit to\n" -"Kelvin, and Kelvin to Celsius:" +msgstr "華氏をケルビンに変換する関数とケルビンをセ氏に変換する関数の2つを定義しましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:164 @@ -14551,15 +14539,13 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Define the function to convert directly from Fahrenheit to Celsius,\n" -"> by reusing the two functions above (or using your own functions if you\n" -"> prefer).\n" +"> 先の2つの関数を再利用するか自分で定義した関数を利用して\n" +"> 華氏を直接セ氏に変換する関数を定義して下さい。\n" ">\n" ">\n" -"> > ## Solution to challenge 2\n" +"> > ## チャレンジ2の解答\n" "> >\n" -"> > Define the function to convert directly from Fahrenheit to Celsius,\n" -"> > by reusing these two functions above\n" +"> > 先の2つの関数を再利用して華氏を直接セ氏に変換する関数を定義して下さい。\n" "> >\n" "> >\n" "> > \n" @@ -14575,7 +14561,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/10-functions.md:202 msgid "## Interlude: Defensive Programming" -msgstr "## Interlude: Defensive Programming" +msgstr "## 幕間: 防衛的プログラミング" #: r-novice-gapminder/_episodes/10-functions.md:204 msgid "" @@ -14589,28 +14575,25 @@ msgid "" "They make it easier to debug because they give us a better idea of where the\n" "errors originate." msgstr "" -"Now that we've begun to appreciate how writing functions provides an efficient\n" -"way to make R code re-usable and modular, we should note that it is important\n" -"to ensure that functions only work in their intended use-cases. Checking\n" -"function parameters is related to the concept of _defensive programming_.\n" -"Defensive programming encourages us to frequently check conditions and throw an\n" -"error if something is wrong. These checks are referred to as assertion\n" -"statements because we want to assert some condition is `TRUE` before proceeding.\n" -"They make it easier to debug because they give us a better idea of where the\n" -"errors originate." +"関数を書くことで R のコードを効率的に再利用したりモジュール化する方法を理解し始めたところですが、\n" +"関数は想定した用途でのみ機能するように確実に設計することが重要です。\n" +"関数の引数を検査することは*防衛的プログラミング*の考え方に繋がります。\n" +"防衛的プログラミングでは状況を頻繁に検査し何かおかしなことがあればエラーを返すことを推奨します。\n" +"このような検査は、プログラム実行を継続する前に現状が `TRUE` であることをアサート(表明・断言)するので、アサーション文と呼ばれます。\n" +"アサーション文により、エラーがどこで起きているか分かりやすくなりデバッグが容易になります。" # header #: r-novice-gapminder/_episodes/10-functions.md:214 msgid "### Checking conditions with `stopifnot()`" -msgstr "### Checking conditions with `stopifnot()`" +msgstr "### `stopifnot()` を用いて状態を検査しましょう" #: r-novice-gapminder/_episodes/10-functions.md:216 msgid "" "Let's start by re-examining `fahr_to_kelvin()`, our function for converting\n" "temperatures from Fahrenheit to Kelvin. It was defined like so:" msgstr "" -"Let's start by re-examining `fahr_to_kelvin()`, our function for converting\n" -"temperatures from Fahrenheit to Kelvin. It was defined like so:" +"華氏をケルビンに変換する `fahr_to_kelvin()` 関数について再検討してみましょう。\n" +"この関数の定義は以下の通りです。" #: r-novice-gapminder/_episodes/10-functions.md:228 msgid "" @@ -14621,12 +14604,12 @@ msgid "" "could check for this condition with an `if` statement and throw an error if the\n" "condition was violated. We could augment our function above like so:" msgstr "" -"For this function to work as intended, the argument `temp` must be a `numeric`\n" -"value; otherwise, the mathematical procedure for converting between the two\n" -"temperature scales will not work. To create an error, we can use the function\n" -"`stop()`. For example, since the argument `temp` must be a `numeric` vector, we\n" -"could check for this condition with an `if` statement and throw an error if the\n" -"condition was violated. We could augment our function above like so:" +"この関数が意図した通りに機能するには、`temp` 引数は数値でなければなりません。\n" +"さもなくば、片方の温度の尺度からもう一方へ変換する計算過程が機能しません。\n" +"エラーを返すためには、`stop` 関数を使います。\n" +"例えば、`temp` 引数は数値ベクトルである必要があるので、\n" +"`if` 文により `temp` が数値ベクトルであるか確認し、違反していればエラーを返すようにします。\n" +"先述の関数の場合は以下のように増補します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:236 @@ -14660,28 +14643,27 @@ msgid "" "conditions also serves a secondary purpose as extra documentation for the\n" "function." msgstr "" -"If we had multiple conditions or arguments to check, it would take many lines\n" -"of code to check all of them. Luckily R provides the convenience function\n" -"`stopifnot()`. We can list as many requirements that should evaluate to `TRUE`;\n" -"`stopifnot()` throws an error if it finds one that is `FALSE`. Listing these\n" -"conditions also serves a secondary purpose as extra documentation for the\n" -"function." +"複数の状態や引数を検査する必要があると、全てを検査するためのコードは何行にも渡ります。\n" +"幸いなことに R は `stopifnot` という便利な関数を提供しています。\n" +"`TRUE` と評価されるべき要件を必要なだけ列挙すると、\n" +"`stopifnot()` は一つでも `FALSE` がある場合にエラーを返します。\n" +"検査項目を列挙すると、追加のドキュメント化という2つ目の目的としても機能します。" #: r-novice-gapminder/_episodes/10-functions.md:254 msgid "" "Let's try out defensive programming with `stopifnot()` by adding assertions to\n" "check the input to our function `fahr_to_kelvin()`." msgstr "" -"Let's try out defensive programming with `stopifnot()` by adding assertions to\n" -"check the input to our function `fahr_to_kelvin()`." +"`stopifnot()` を用いて `fahr_to_kelvin()` に入力を検査するアサーション文を追加し、\n" +"防衛的プログラミングに挑戦しましょう。" #: r-novice-gapminder/_episodes/10-functions.md:257 msgid "" "We want to assert the following: `temp` is a numeric vector. We may do that like\n" "so:" msgstr "" -"We want to assert the following: `temp` is a numeric vector. We may do that like\n" -"so:" +"`temp` が数値ベクトルであることをアサートしたいとします。\n" +"以下のようにしましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:261 @@ -14704,7 +14686,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:270 msgid "It still works when given proper input." -msgstr "It still works when given proper input." +msgstr "入力が適切であればこれでも機能します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:273 @@ -14715,13 +14697,13 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# freezing point of water\n" +"# 水の凝固点\n" "fahr_to_kelvin(temp = 32)\n" "~~~" #: r-novice-gapminder/_episodes/10-functions.md:286 msgid "But fails instantly if given improper input." -msgstr "But fails instantly if given improper input." +msgstr "しかし不適切な入力があるとすぐに失敗します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:289 @@ -14775,17 +14757,15 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Use defensive programming to ensure that our `fahr_to_celsius()` function\n" -"> throws an error immediately if the argument `temp` is specified\n" -"> inappropriately.\n" +"> 防衛的プログラミングにより、`fahr_to_celsius()` 関数の `temp` 引数に不適切な\n" +"> 値が指定されたらすぐにエラーを返すよう念押しして下さい。\n" ">\n" ">\n" -"> > ## Solution to challenge 3\n" +"> > ## チャレンジ3の解答\n" "> >\n" -"> > Extend our previous definition of the function by adding in an explicit call\n" -"> > to `stopifnot()`. Since `fahr_to_celsius()` is a composition of two other\n" -"> > functions, checking inside here makes adding checks to the two component\n" -"> > functions redundant.\n" +"> > 明示的に `stopifnot()` を呼ぶことで先述の関数の定義を拡張しましょう。\n" +"> > `fahr_to_celsius()` は2つの他の関数から構成されているので、\n" +">> ここでの検査は2つの関数の検査に追加され冗長になります。\n" "> >\n" "> >\n" "> > \n" @@ -14802,15 +14782,13 @@ msgstr "" # header #: r-novice-gapminder/_episodes/10-functions.md:330 msgid "## More on combining functions" -msgstr "## More on combining functions" +msgstr "## もっと関数を組み合わせましょう" #: r-novice-gapminder/_episodes/10-functions.md:332 msgid "" "Now, we're going to define a function that calculates the Gross Domestic Product\n" "of a nation from the data available in our dataset:" -msgstr "" -"Now, we're going to define a function that calculates the Gross Domestic Product\n" -"of a nation from the data available in our dataset:" +msgstr "ここで我々のデータセットで利用できるデータからある国の国内総生産を計算するための関数を定義します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:336 @@ -14825,8 +14803,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# Takes a dataset and multiplies the population column\n" -"# with the GDP per capita column.\n" +"# データセットを受け取り、人口の列と一人あたりのGDPをかけます。\n" "calcGDP <- function(dat) {\n" " gdp <- dat$pop * dat$gdpPercap\n" " return(gdp)\n" @@ -14840,26 +14817,25 @@ msgid "" "-- the statements executed when you call the function -- is contained within\n" "curly braces (`{}`)." msgstr "" -"We define `calcGDP()` by assigning it to the output of `function`. The list of\n" -"argument names are contained within parentheses. Next, the body of the function \n" -"-- the statements executed when you call the function -- is contained within\n" -"curly braces (`{}`)." +"`calcGDP()` を定義するために、`function` の結果を `calcGDP` に代入します。\n" +"引数の名前の一覧は括弧に中に書きます。\n" +"次に、本文 -- 関数を読んだ時に実行される命令文 -- は波括弧 (`{}`) の中に書きます。" #: r-novice-gapminder/_episodes/10-functions.md:351 msgid "" "We've indented the statements in the body by two spaces. This makes the code\n" "easier to read but does not affect how it operates." msgstr "" -"We've indented the statements in the body by two spaces. This makes the code\n" -"easier to read but does not affect how it operates." +"本文中の命令文は2つのスペースでインデントしました。\n" +"これにより関数の動作に影響を及ぼさずに可読性を向上できます。" #: r-novice-gapminder/_episodes/10-functions.md:354 msgid "" "When we call the function, the values we pass to it are assigned to the\n" "arguments, which become variables inside the body of the function." msgstr "" -"When we call the function, the values we pass to it are assigned to the\n" -"arguments, which become variables inside the body of the function." +"関数を呼び出す時に、関数に渡した値は引数に指定され、\n" +"関数の本文中における変数になります。" #: r-novice-gapminder/_episodes/10-functions.md:357 msgid "" @@ -14867,9 +14843,8 @@ msgid "" "This `return()` function is optional: R will automatically return the results of\n" "whatever command is executed on the last line of the function." msgstr "" -"Inside the function, we use the `return()` function to send back the result.\n" -"This `return()` function is optional: R will automatically return the results of\n" -"whatever command is executed on the last line of the function." +"関数の中では `return()` 関数を用いて結果を返します。\n" +"`return()` 関数は必須ではなく、R は 関数の最終行で実行されたコマンドの結果を自動的に返します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:363 @@ -14897,9 +14872,7 @@ msgstr "" msgid "" "That's not very informative. Let's add some more arguments so we can extract\n" "that per year and country." -msgstr "" -"That's not very informative. Let's add some more arguments so we can extract\n" -"that per year and country." +msgstr "これでは情報に乏しいです。いくつか引数を追加して、年ごとと国ごとの情報を得られるようにしましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:379 @@ -14923,8 +14896,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# Takes a dataset and multiplies the population column\n" -"# with the GDP per capita column.\n" +"# データセットを受け取り、人口の列と一人あたりのGDPの列をかけます。\n" "calcGDP <- function(dat, year=NULL, country=NULL) {\n" " if(!is.null(year)) {\n" " dat <- dat[dat$year %in% year, ]\n" @@ -14945,9 +14917,8 @@ msgid "" "(a good idea!), you can load in the functions into our R session by using the\n" "`source()` function:" msgstr "" -"If you've been writing these functions down into a separate R script\n" -"(a good idea!), you can load in the functions into our R session by using the\n" -"`source()` function:" +"もしこれらの関数を別の R スクリプトに書いているなら (グッドアイディア!)、\n" +"`source()` 関数を使って関数を R セッションに読み込むことができます。" # code block #: r-novice-gapminder/_episodes/10-functions.md:402 @@ -14970,17 +14941,16 @@ msgid "" "this as the final result. You can see that the output is much more informative\n" "than a vector of numbers." msgstr "" -"Ok, so there's a lot going on in this function now. In plain English, the\n" -"function now subsets the provided data by year if the year argument isn't empty,\n" -"then subsets the result by country if the country argument isn't empty. Then it \n" -"calculates the GDP for whatever subset emerges from the previous two steps. The \n" -"function then adds the GDP as a new column to the subsetted data and returns\n" -"this as the final result. You can see that the output is much more informative\n" -"than a vector of numbers." +"さて、この関数の中では色々なことが起きています。\n" +"平文にすると、この関数は `year` 引数を指定されている場合に、指定した値でデータを絞り込みます。\n" +"次にその結果を、`country` 引数が指定されている場合に指定した値で絞り込みます。\n" +"そしてこの2つの段階を経て現れたデータに対してGDPを計算します。\n" +"更にこの関数は、絞り込んだデータに新しくGDPの列を追加し、最終結果として返します。\n" +"出力が単に数値のベクトルだった時よりもはるかに情報に富んでいることがわかるでしょう。" #: r-novice-gapminder/_episodes/10-functions.md:415 msgid "Let's take a look at what happens when we specify the year:" -msgstr "Let's take a look at what happens when we specify the year:" +msgstr "`year` を指定した時に何が起きるか見てみましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:418 @@ -15018,7 +14988,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:436 msgid "Or for a specific country:" -msgstr "Or for a specific country:" +msgstr "また `country` を指定するとどうなるでしょうか。" # code block #: r-novice-gapminder/_episodes/10-functions.md:439 @@ -15068,7 +15038,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:463 msgid "Or both:" -msgstr "Or both:" +msgstr "あるいは両方指定してみましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:466 @@ -15096,7 +15066,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:479 msgid "Let's walk through the body of the function:" -msgstr "Let's walk through the body of the function:" +msgstr "関数の本文を順番に見ていきましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:482 @@ -15116,10 +15086,9 @@ msgid "" "in the function definition. This means that those arguments will\n" "take on those values unless the user specifies otherwise." msgstr "" -"Here we've added two arguments, `year`, and `country`. We've set\n" -"*default arguments* for both as `NULL` using the `=` operator\n" -"in the function definition. This means that those arguments will\n" -"take on those values unless the user specifies otherwise." +"ここで `year` と `country` の二つの引数を追加しました。\n" +"`=` 演算子を関数定義時に用いることで、両者の*既定値*には `NULL` を指定しています。\n" +"これにより、ユーザーが値を指定しない限り、これらの引数の値は `NULL` になることを意味します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:493 @@ -15148,50 +15117,47 @@ msgid "" "they're not `null` overwrite the dataset stored in `dat` with a subset given by \n" "the non-`null` argument." msgstr "" -"Here, we check whether each additional argument is set to `null`, and whenever\n" -"they're not `null` overwrite the dataset stored in `dat` with a subset given by \n" -"the non-`null` argument." +"ここでは、追加した引数それぞれについて値が `NULL` であるか確認し、\n" +"`NULL` でなければ `dat` に格納されたデータセットを非 `NULL` な引数の値を用いて絞り込み上書きします。" #: r-novice-gapminder/_episodes/10-functions.md:507 msgid "" "I did this so that our function is more flexible for later. We can ask it to\n" "calculate the GDP for:" msgstr "" -"I did this so that our function is more flexible for later. We can ask it to\n" -"calculate the GDP for:" +"こうして関数を柔軟なものにすることで、後々使いやすくしました。\n" +"この関数を用いて、以下の様々な場合のGDPを計算できます。" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:510 msgid " * The whole dataset;" -msgstr " * The whole dataset;" +msgstr " * データセット全体" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:511 msgid " * A single year;" -msgstr " * A single year;" +msgstr " * ある年" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:512 msgid " * A single country;" -msgstr " * A single country;" +msgstr " * ある国" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:513 msgid " * A single combination of year and country." -msgstr " * A single combination of year and country." +msgstr " * ある年とある国の組み合わせ" #: r-novice-gapminder/_episodes/10-functions.md:515 msgid "" "By using `%in%` instead, we can also give multiple years or countries to those\n" "arguments." -msgstr "" -"By using `%in%` instead, we can also give multiple years or countries to those\n" -"arguments." +msgstr "代わりに `%in%` を使うことによって、`year` と `country` に複数の値を指定できるようになっています。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:518 msgid "> ## Tip: Pass by value" -msgstr "> ## Tip: Pass by value" +msgstr "> ## Tip: 値渡し" #: r-novice-gapminder/_episodes/10-functions.md:519 msgid "" @@ -15206,19 +15172,18 @@ msgid "" "> body of the function, stay inside the body of the function." msgstr "" ">\n" -"> Functions in R almost always make copies of the data to operate on\n" -"> inside of a function body. When we modify `dat` inside the function\n" -"> we are modifying the copy of the gapminder dataset stored in `dat`,\n" -"> not the original variable we gave as the first argument.\n" +"> R の関数は関数本文中で操作するためのデータを、ほぼ必ずコピーします。\n" +"> 関数の中で `dat` を変更するということは、\n" +"> `dat` に格納された gapminder データセットのコピーを変更するということであり、\n" +"> 第一引数に指定した元の変数を変更することはありません。\n" ">\n" -"> This is called \"pass-by-value\" and it makes writing code much safer:\n" -"> you can always be sure that whatever changes you make within the\n" -"> body of the function, stay inside the body of the function." +"> この挙動は \"値渡し\" と呼ばれ、コードの記述をより安全なものにします。\n" +"> つまり、関数内での変更は常に関数内での出来事に留まります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:530 msgid "> ## Tip: Function scope" -msgstr "> ## Tip: Function scope" +msgstr "> ## Tip: 関数のスコープ" #: r-novice-gapminder/_episodes/10-functions.md:531 msgid "" @@ -15230,13 +15195,12 @@ msgid "" "> have variables of the same name in our interactive R session, they are\n" "> not modified in any way when executing a function." msgstr "" -">\n" -"> Another important concept is scoping: any variables (or functions!) you\n" -"> create or modify inside the body of a function only exist for the lifetime\n" -"> of the function's execution. When we call `calcGDP()`, the variables `dat`,\n" -"> `gdp` and `new` only exist inside the body of the function. Even if we\n" -"> have variables of the same name in our interactive R session, they are\n" -"> not modified in any way when executing a function." +"> スコープはもう一つの重要な概念です。\n" +"> 関数の本文中で作成したり変更したいかなる変数 (関数を含む!) は、\n" +"> 関数を実行している間だけ存在します。`calcGDP()` を呼んだ時に、\n" +"> `dat`、`gdp`、そして `new` という変数は関数の本文中でのみ存在します。\n" +"> 対話的な R のセッションにおいて同名の変数が存在していたとして、\n" +"> それらは関数実行時に変更されることはありません。" # code block #: r-novice-gapminder/_episodes/10-functions.md:541 @@ -15262,10 +15226,9 @@ msgid "" "the context for the returned GDP values, which is much better than in our first \n" "attempt where we got a vector of numbers." msgstr "" -"Finally, we calculated the GDP on our new subset, and created a new data frame\n" -"with that column added. This means when we call the function later we can see\n" -"the context for the returned GDP values, which is much better than in our first \n" -"attempt where we got a vector of numbers." +"最終的に、絞り込んだデータからGDPを計算し、その結果を列に追加した新しいデータフレームを作成しました。\n" +"これは関数を呼び出した後でも返り値のGDPの値が持つ文脈がわかることを意味します。\n" +"従って、最初に試した数値のベクトルを返す方法よりもずっと良いものです。" #: r-novice-gapminder/_episodes/10-functions.md:555 msgid "" @@ -15285,19 +15248,19 @@ msgid "" "> > GDP for New Zealand in 1952: 21058193787" msgstr "" ">\n" -"> Test out your GDP function by calculating the GDP for New Zealand in 1987. How\n" -"> does this differ from New Zealand's GDP in 1952?\n" +"> GDP を計算する関数をテストするため、1987年の New Zealand の GDP を計算して下さい。\n" +"> 1952 年の New Zealand の GDP とはどう違いますか?\n" ">\n" -"> > ## Solution to challenge 4\n" +"> > ## チャレンジ4の解答\n" "> >\n" "> > \n" "> > ~~~\n" "> > calcGDP(gapminder, year = c(1952, 1987), country = \"New Zealand\")\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > GDP for New Zealand in 1987: 65050008703\n" +"> > 1987年の New Zealand の GDP: 65050008703\n" "> >\n" -"> > GDP for New Zealand in 1952: 21058193787" +"> > 1952年の New Zealand の GDP: 21058193787" #: r-novice-gapminder/_episodes/10-functions.md:574 msgid "" @@ -15318,7 +15281,7 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> The `paste()` function can be used to combine text together, e.g:\n" +"> `paste()` 関数を使うと文字列を一繋ぎにできます。例えば\n" ">\n" "> \n" "> ~~~\n" @@ -15375,8 +15338,7 @@ msgid "" "> > {: .output}" msgstr "" ">\n" -"> Write a function called `fence()` that takes two vectors as arguments, called\n" -"> `text` and `wrapper`, and prints out the text wrapped with the `wrapper`:\n" +"> `text` と `wrapper` という引数を持ち、`text` を `wapper` で囲む `fence()` という関数を定義して下さい。\n" ">\n" "> \n" "> ~~~\n" @@ -15384,15 +15346,12 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> *Note:* the `paste()` function has an argument called `sep`, which specifies\n" -"> the separator between text. The default is a space: \" \". The default for\n" -"> `paste0()` is no space \"\".\n" +"> *Note:* `paste()` 関数では `sep` 引数を用いて文字列の間に入る文字列を指定できます。\n" +"> `paste0()` の場合 `sep` の既定値は \"\" です。\n" ">\n" -"> > ## Solution to challenge 5\n" +"> > ## チャレンジ5の解答\n" "> >\n" -"> > Write a function called `fence()` that takes two vectors as arguments,\n" -"> > called `text` and `wrapper`, and prints out the text wrapped with the\n" -"> > `wrapper`:\n" +"> > `text` と `wrapper` という引数を持ち、`text` を `wapper` で囲む `fence()` という関数を定義して下さい。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -15424,12 +15383,11 @@ msgid "" "> [Advanced R Programming][adv-r] by Hadley Wickham." msgstr "" ">\n" -"> R has some unique aspects that can be exploited when performing more\n" -"> complicated operations. We will not be writing anything that requires\n" -"> knowledge of these more advanced concepts. In the future when you are\n" -"> comfortable writing functions in R, you can learn more by reading the\n" -"> [R Language Manual][man] or this [chapter][] from\n" -"> [Advanced R Programming][adv-r] by Hadley Wickham." +"> R より複雑な演算を行う時に利用できる変わった機能があります。\n" +"> ここでは発展的な概念を知っておく必要のあることは書きません。\n" +"> 将来的に R で関数を書くことに慣れたら、\n" +"> [R Language Manual][man] や Hadley Wickham による\n" +"> [Advanced R Programming][adv-r] のこの[章][]を読んで学んで下さい。" #: r-novice-gapminder/_episodes/10-functions.md:641 msgid "" @@ -15438,13 +15396,13 @@ msgid "" "[adv-r]: http://adv-r.had.co.nz/" msgstr "" "[man]: http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Environment-objects\n" -"[chapter]: http://adv-r.had.co.nz/Environments.html\n" +"[章]: http://adv-r.had.co.nz/Environments.html\n" "[adv-r]: http://adv-r.had.co.nz/" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:646 msgid "> ## Tip: Testing and documenting" -msgstr "> ## Tip: Testing and documenting" +msgstr "> ## Tip: テストとドキュメント" #: r-novice-gapminder/_episodes/10-functions.md:647 msgid "" @@ -15476,31 +15434,26 @@ msgid "" "> Formal automated tests can be written using the [testthat][] package." msgstr "" ">\n" -"> It's important to both test functions and document them:\n" -"> Documentation helps you, and others, understand what the\n" -"> purpose of your function is, and how to use it, and its\n" -"> important to make sure that your function actually does\n" -"> what you think.\n" -">\n" -"> When you first start out, your workflow will probably look a lot\n" -"> like this:\n" +"> 関数をテストし、ドキュメントを整備することは重要です。\n" +"> ドキュメントはあなたや他の人が関数の用途や用法を理解する助けになります。\n" +"> また、関数が意図した通りに動作することを確認することは重要です。\n" +"> 始めるにあたって、作業手順は多くの場合以下のようなものになるでしょう。\n" ">\n" -"> 1. Write a function\n" -"> 2. Comment parts of the function to document its behaviour\n" -"> 3. Load in the source file\n" -"> 4. Experiment with it in the console to make sure it behaves\n" -"> as you expect\n" -"> 5. Make any necessary bug fixes\n" -"> 6. Rinse and repeat.\n" +"> 1. 関数を書く\n" +"> 2. 関数の部分的な挙動についてドキュメント代わりにコメントする\n" +"> 3. ソースファイルを読み込む\n" +"> 4. コンソール上で実験し、意図した通りに動作するか確認する\n" +"> 5. 適宜バグの修正を行う\n" +"> 6. これらを繰り返す。\n" ">\n" -"> Formal documentation for functions, written in separate `.Rd`\n" -"> files, gets turned into the documentation you see in help\n" -"> files. The [roxygen2][] package allows R coders to write documentation\n" -"> alongside the function code and then process it into the appropriate `.Rd`\n" -"> files. You will want to switch to this more formal method of writing\n" -"> documentation when you start writing more complicated R projects.\n" +"> 別途 `.Rd` ファイルに記述された正式な関数のドキュメントは、\n" +"> ヘルプファイルを見た時のドキュメントになります。\n" +"> [roxygen2][] パッケージを使うと、開発者は R の関数のすぐ側にドキュメントを書き、\n" +"> 適切な `.Rd` ファイルに加工することができます。\n" +"> より複雑なプロジェクトを R で扱うようになると、このようにより正式な手法を使って\n" +"> ドキュメントを整備したくなるでしょう。\n" ">\n" -"> Formal automated tests can be written using the [testthat][] package." +"> 正式な自動化されたテストを書くには [testthat][] パッケージを使います。." #: r-novice-gapminder/_episodes/10-functions.md:675 msgid "" @@ -21828,7 +21781,7 @@ msgstr "- `all()` はベクトルの要素が*全て* `TRUE` であれば `TRUE` # header #: r-novice-gapminder/reference.md:195 msgid "## [Functions explained]({{ page.root }}/10-functions/)" -msgstr "## [Functions explained]({{ page.root }}/10-functions/)" +msgstr "## [関数について]({{ page.root }}/10-functions/)" # unordered list #: r-novice-gapminder/reference.md:197 @@ -21838,7 +21791,7 @@ msgstr " - `?\"function\"`" # unordered list #: r-novice-gapminder/reference.md:198 msgid " - Put code whose parameters change frequently in a function, then call it with" -msgstr " - Put code whose parameters change frequently in a function, then call it with" +msgstr " - 何度もパラメータを変えながら実行するコードを関数にし、" #: r-novice-gapminder/reference.md:199 msgid "" @@ -21847,10 +21800,10 @@ msgid "" " - Any code written in the body of the function will preferably look for variables defined inside the function.\n" " - Document Why, then What, then lastly How (if the code isn't self explanatory)" msgstr "" -" different parameter values to customize its behavior.\n" -" - The last line of a function is returned, or you can use `return` explicitly\n" -" - Any code written in the body of the function will preferably look for variables defined inside the function.\n" -" - Document Why, then What, then lastly How (if the code isn't self explanatory)" +" 作った関数をパラメータの値を変えることで挙動を変更しながら呼び出しましょう。\n" +" - 関数の最終行か、明示的に `return` を用いた部分が返り値になります。\n" +" - 関数の本文中に記述したコードはいずれも、関数内で定義された変数から探し始めます。\n" +" - コードの内容が自明ではない時は、ドキュメントに「なぜ」、次に「何」、そして最後に「どう」を記述しましょう。" # header #: r-novice-gapminder/reference.md:204