« 2019年7月 | トップページ | 2019年9月 »

2019年8月30日 (金)

[Python]対話型実行環境でスクリプトを実行する

exec関数を使う。カレントディレクトリ(現在のフォルダー)にあるtest.pyを実行するのであれば、以下のようにする。

>>> exec(open("test.py").read())

2019年8月29日 (木)

[R]ファイル名(文字列)から拡張子を削除する

gsub関数を正規表現を使用して取り除く。以下、例。

> s <- c("abc.def", "abc.def.ghi", "abc.def.ghi.jkl")
> s
[1] "abc.def" "abc.def.ghi" "abc.def.ghi.jkl"
> gsub("\\.[^.]+$", "", s)
[1] "abc" "abc.def" "abc.def.ghi"
> gsub("(\\.[^.]+){2}$", "", s)
[1] "abc.def" "abc" "abc.def"

 

2019年8月28日 (水)

[R]順列の総数を求める

Rには順列の総数nPrを求める関数が標準で搭載されていない。順列は以下のように書きかえることができるため、階乗を求めるfactorial関数を使用して計算する。

以下は、順列の総数 nPr を求める関数 permuを作成して計算した例。なお、n >= r、0! = 1であることに注意。n = r の場合は階乗そのものである。

5P2 = 20
5P3 = 60
10P3 = 720

> permu <- function(n, r) {factorial(n) / factorial(n - r)}
> permu(5, 2)
[1] 20
> permu(5, 3)
[1] 60
> permu(10, 3)
[1] 720
> permu(3, 3)
[1] 6

2019年8月25日 (日)

[R]2つのベクトルの値の重複を除いたすべての組み合わせを作成する

combn関数を使う。combn関数は、2番目の引数に与えた数値の数で組み合わせる、重複無しの組み合わせを返す。ただし、戻り値は行列であることに注意。

> n <- c(1, 3, 9)
> combn(n, 2)
[,1] [,2] [,3]
[1,] 1 1 3
[2,] 3 9 9
> s <- c("A", "B", "C")
> combn(s, 2)
[,1] [,2] [,3]
[1,] "A" "A" "B"
[2,] "B" "C" "C"

 

2019年8月20日 (火)

[R]組合せの数を求める

choose関数を使う。以下は5C2=10と7C3=35の計算例。

> choose(5, 2)
[1] 10
> choose(7, 3)
[1] 35

 

2019年8月18日 (日)

[R]2つのベクトルの値のすべての組み合わせを作成する

expand.grid関数を使う。数値型でも文字型でもかまわない。ただし、戻り値はデータフレームになることに注意。

> n <- c(1, 3, 9)
> expand.grid(n, n)
Var1 Var2
1 1 1
2 3 1
3 9 1
4 1 3
5 3 3
6 9 3
7 1 9
8 3 9
9 9 9
> s <- c("A", "B", "C")
> expand.grid(s, s)
Var1 Var2
1 A A
2 B A
3 C A
4 A B
5 B B
6 C B
7 A C
8 B C
9 C C

2019年8月17日 (土)

[R]行列の列名を削除する

unname関数を使うと列名を削除した行列を返す。colnames関数でNULLを与えても削除できるが、こちらは指定した行列そのものの列名を削除することに注意。


> mx1 <- matrix(1:6, nrow = 3, ncol = 2)
> mx1
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> colnames(mx1) <- c("x1", "x2")
> mx1
x1 x2
[1,] 1 4
[2,] 2 5
[3,] 3 6
> mx2 <- unname(mx1)
> mx2
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> colnames(mx1) <- NULL
> mx1
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6

2019年8月11日 (日)

[Python]文字列を画面に表示する

print関数を使う。

>>> s1 = "ABC"
>>> s2 = "DEF"
>>> print("123abc")
123abc
>>> print(s1)
ABC
>>> print(s1); print(s2)
ABC
DEF
>>> print(s1, end = ""); print(s2)
ABCDEF

print関数は特にオプションを指定しないと、表示後に強制的に改行をすることに注意。改行をしたくない場合は、endオプションに長さ0の文字列(””)を指定する。

2019年8月10日 (土)

[Python]数値を表す文字列を数値に変換する

整数に変換する場合はint関数を、浮動小数点数(小数点以下の数値を含む数)に変換する場合はfloat関数を使う。

>>> s1 = "4"
>>> s2 = "5.4321"
>>> s3 = " -3.21 "
>>> s4 = "-8.9e-10"
>>> int(s1)
4
>>> float(s1)
4.0
>>> float(s2)
5.4321
>>> float(s3)
-3.21
>>> float(s4)
-8.9e-10
>>> int(s2)
Traceback (most recent call last):
File "", line 1, in ValueError: invalid literal for int() with base 10: '5.4321'

int関数に小数を表す文字列を与えると、エラーが発生する。文字列の前後に空白が含まれていてもかまわない。正負の記号も問題ない。指数表記をした文字列でもかまわない。

« 2019年7月 | トップページ | 2019年9月 »

無料ブログはココログ

■■

■■■