My Notes

統計学とかR(R言語)とかPython3の覚え書きとか走り書きとか。 座右の銘にしたい: All work and no play makes Jack a dull boy.

R(R言語)からPython3のファイル(モジュール)を呼び出す。reticulateで楽しむPython3。Python3で楽しむreticulate。リスト内包表記。

Python3コード

(テンプレ的なのを作成したが、くどさと雑さが混じって我ながら酷いと思うがとりあえず動く(とりあえず動くんだ(とりあえずは)))。

(ファイル(モジュール)名は、my_py3_script.py こういう名は、とくに実用的にはよくない、と思う(のが普通(だと思う)))。

(ファイル(モジュール)名についての理由めいたことは後述(さほど詳しくは書いてないが))。

#!/usr/bin/env python3


"""(docstring モジュールの説明等、書く必要があるなら書く)。
"""


# (実用的な関数を作る場合は、ちゃんと具体的な関数名に)。
def my_func():
    """(docstring 関数の説明等、書く必要があるなら書く)。

    (doctest、書く必要があるなら書く)。
    ちょっとした例(なお、testが通らない場合、<BLANKLINE>の必要性を考える(といいかも))。
    >>> res1 = [i ** i for i in range(1, 10 + 1)]
    >>> print(res1)
    [1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489, 10000000000]

    >>> res2 = [i**i for i in range(1, 10+1)]
    >>> print(res2)
    [1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489, 10000000000]
    """

    res1 = [i ** i for i in range(1, 10 + 1)]
    print(res1)
    # print()だけで空文を作ると、RStudioのコンソールに'()'が出力されてしまう。
    print('')

    # 半角スペースが無駄に感じるならば。
    res2 = [i**i for i in range(1, 10+1)]
    print(res2)

if __name__ == '__main__':
    import doctest
    doctest.testmod()
    my_func()

    # doctest用。
    # $ python3 my_py3_script.py -v

    # PEP8が気になる場合。
    # pip install等で、pep8が入ってる場合。
    # $ pep8 my_py3_script.py

    # いろんなコードチェッカーを使いたい場合。
    # pip install等で、pylint や pyflakes が入ってる場合。
    # $ pylint my_py3_script.py
    # $ pyflakes my_py3_script.py

    # 何も問題がなければ、doctestとpylint以外、何も出力しないはず。
    # つまり、問題なければ、pep8とpyflakesは何も出力しないはず。
    # 当ブログ筆者の環境では、とくに問題ないんだが、
    # コピペすると、インデントがちょっとでも崩れたりで、うまくいかないこともあるかもしれない。

    # ちなみに、テストが通らないと、RStudioにもエラーメッセージが出力されて、
    # ちょっと感動した。

Rコード

#
# R(R言語)からPython3のファイル(モジュール)を呼び出す。reticulateで楽しむPython3。Python3で楽しむreticulate。リスト内包表記。
#




library(reticulate)




# py_config() 読み込んだPythonのバージョン確認。




# ファイルパス等について(当ブログはただの"My Notes"なんだが、
# 一応、ブログ記事として公開しているので書いておく)。
#
# (ファイルパス等は個人や組織によって異なるはずだが、しかし)。
#
# 冗長に書くと、
# py_run_file("~/プロジェクトネームとかディレクトリ名とかフォルダ名とかいずれかひとつ/python3のファイル名.py")
#
# 簡単に書くと、
# py_run_file("~/foo/bar.py")
#
# 中間的に書くと、
# py_run_file("~/dirname/filename.py")
#
# その他、py_run_file("~/foo1/foo2/bar.py") 等いろいろ自分の環境に合わせて。
#
# (当ブログでは、ファイル名含め便宜的に抽象的に書いておく。
# py_run_file("my_py3_script.py") 等。
#

py_run_file("my_py3_script.py")

R Console

> #
> # R(R言語)からPython3のファイル(モジュール)を呼び出す。reticulateで楽しむPython3。Python3で楽しむreticulate。リスト内包表記。
> #
> 
> 
> 
> 
> library(reticulate)
> 
> 
> 
> 
> # py_config() 読み込んだPythonのバージョン確認。
> 
> 
> 
> 
> # ファイルパス等について(当ブログはただの"My Notes"なんだが、
> # 一応、ブログ記事として公開しているので書いておく)。
> #
> # (ファイルパス等は個人や組織によって異なるはずだが、しかし)。
> #
> # 冗長に書くと、
> # py_run_file("~/プロジェクトネームとかディレクトリ名とかフォルダ名とかいずれかひとつ/python3のファイル名.py")
> #
> # 簡単に書くと、
> # py_run_file("~/foo/bar.py")
> #
> # 中間的に書くと、
> # py_run_file("~/dirname/filename.py")
> #
> # その他、py_run_file("~/foo1/foo2/bar.py") 等いろいろ自分の環境に合わせて。
> #
> # (当ブログでは、ファイル名含め便宜的に抽象的に書いておく。
> # py_run_file("my_py3_script.py") 等。
> #
> 
> py_run_file("my_py3_script.py")
> 
[1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489, 10000000000]

[1, 4, 27, 256, 3125, 46656, 823543, 16777216, 387420489, 10000000000]

(ちゃんとリスト内包表記が出力(ちゃんとかどうかはわからない))。

当ブログよりも遥かに参考になるWebサイト

以下の過去記事リンク内の3つのリンクが参考に。

my-notes.hatenablog.com

参考文献

Python3の書籍では、最後に読んだのがこちら。比較的、網羅的に学べると思う。

入門 Python 3

入門 Python 3