« 2024年2月 | トップページ | 2024年4月 »

2024年3月30日 (土)

[R]ウェブサイトのページの文字コードを調べる

rvestパッケージのread_html関数とhtml_node関数を組み合わせて使う。以下の例では、ページの文字コードがUTF-8であることがわかる。

> library(dplyr)
> library(rvest)
> s <- "https://www.kunaicho.go.jp"
> html <- read_html(s)
> html %>% html_node(xpath = "//meta[@content | @charset]")
{html_node}
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

2024年3月29日 (金)

[R]ベクトルに値を代入する

代入演算子<-を使う。

> n <- 58
> s <- "ライスシャワー役の石見舞菜香さんかわいい"
> n
[1] 58
> s
[1] "ライスシャワー役の石見舞菜香さんかわいい"

2024年3月28日 (木)

[R]パーセントエンコーディングを行う

URLencode関数を使う。

> URLencode("和多田美咲")
[1] "%E5%92%8C%E5%A4%9A%E7%94%B0%E7%BE%8E%E5%92%B2"

試しに、このパーセントエンコーディングを使用して、Googleで「和多田美咲」で検索した結果のページを開いてみる。

> s <- "https://www.google.co.jp/search?q="
> s <- paste0(s, URLencode("和多田美咲"))
> print(s)
[1] "https://www.google.co.jp/search?q=%E5%92%8C%E5%A4%9A%E7%94%B0%E7%BE%8E%E5%92%B2"
> browseURL(s)

R_urlencode

2024年3月25日 (月)

[R]URLをブラウザーで開く

browseURL関数を使う。Googleのトップページを既定のブラウザーで開いてみる。

> browseURL("https://www.google.co.jp")

起動するブラウザーを指定する場合はbrowserオプションにブラウザーの本体(.exe)をフルパスで指定する。browserオプションを指定した場合、ブラウザーの起動に成功すると0、失敗知ると0以外の戻り値が返る。Windows 10でEdgeを指定して開く場合は以下の最後の例のようになる。

> browseURL("https://www.google.co.jp", browser = "C:/Program Files (x86)/Microsoft/firefox.exe")
[1] 127
警告メッセージ:
system(paste0("\"", browser, "\" ", if (encodeIfNeeded) URLencode(url) else url), で:
'"C:/Program Files (x86)/Microsoft/firefox.exe"' not found
> browseURL("https://www.google.co.jp", browser = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe")
[1] 0

2024年3月24日 (日)

[R]剰余を求める

%%演算子を使う。

> n <- -5:5
> print(n)
[1] -5 -4 -3 -2 -1 0 1 2 3 4 5
> n %% 3
[1] 1 2 0 1 2 0 1 2 0 1 2
> d <- seq(-3, 3, 0.5)
> print(d)
[1] -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0
> d %% 2
[1] 1.0 1.5 0.0 0.5 1.0 1.5 0.0 0.5 1.0 1.5 0.0 0.5 1.0

2024年3月23日 (土)

[R]ベクトルの要素が特定の値か否かの判定を行う

%in%演算子を使う。左側のベクトルの要素が右側のベクトルに含まれる場合はTRUE、そうでない場合はFALSEを返す。

> s <- c("大橋彩香", "石見舞菜香", "優木かな", "和多田美咲")
> s %in% "大橋彩香"
[1] TRUE FALSE FALSE FALSE
> s %in% c("石見舞菜香", "和多田美咲")
[1] FALSE TRUE FALSE TRUE

2024年3月22日 (金)

[R]ベクトルのインデックスベクトルを作成する

seq_along関数は引数に指定したベクトルのインデックス(初項1、公差1、末項と項数がベクトルの長さの等差数列)となるベクトルを作成する。戻り値は1:length(v)(vはベクトル)と同じであり、これよりはシンプルな書き方をすることができる。

> s <- c("大橋彩香", "石見舞菜香", "優木かな", "和多田美咲")
> seq_along(s)
[1] 1 2 3 4
> 1:length(s)
[1] 1 2 3 4

2024年3月21日 (木)

[R]区切り文字に.(ドット)を使った日付文字列を日付に変換する

as.Date関数もstrptime関数もデフォルトでは区切り文字に.(ドット)を使うことはできない。formatオプションに書式を指定すればよい。lubridateパッケージのymd関数はデフォルトの状態で変換することができる。

> s <- c("2001.2.3", "2012.3.4", "2123.4.5")
> as.Date(s)
charToDate(x) でエラー:
文字列は標準的な曖昧さのない書式にはなっていません
> as.Date(s, format = "%Y.%m.%d")
[1] "2001-02-03" "2012-03-04" "2123-04-05"
> strptime(s)
strptime(s) でエラー:
引数 "format" がありませんし、省略時既定値もありません
> strptime(s, format = "%Y.%m.%d")
[1] "2001-02-03 JST" "2012-03-04 JST" "2123-04-05 JST"
> lubridate::ymd(s)
[1] "2001-02-03" "2012-03-04" "2123-04-05"

2024年3月20日 (水)

[R]スクリプトを実行する

source関数を使う。source関数は引数に指定したテキストファイルの読み込んで、その内容を実行する。以下の5行からなるスクリプトをカレントディレクトリにscript.Rと保存する。

no <- c(58, 69)
name <- c("メイショウドトウ", "サクラチヨノオー")
seiyu <- c("和多田美咲", "野口瑠璃子")
dtf <- data.frame(no, name, seiyu)
print(dtf)

このファイルscript.Rを読み込ませてスクリプトを実行してみる。

> source("script.R")
no name seiyu
1 58 メイショウドトウ 和多田美咲
2 69 サクラチヨノオー 野口瑠璃子

実行時は、画面表示に送られたものしか画面表示されない。スクリプトをコマンドラインでの入力としてそれも表示したい場合はechoオプションにTRUEを指定する。

> source("script.R", echo = TRUE)
> no <- c(58, 69)
> name <- c("メイショウドトウ", "サクラチヨノオー")
> seiyu <- c("和多田美咲", "野口瑠璃子")
> dtf <- data.frame(no, name, seiyu)
> print(dtf)
no name seiyu
1 58 メイショウドトウ 和多田美咲
2 69 サクラチヨノオー 野口瑠璃子

2024年3月18日 (月)

[R]SQLのselect文を使用してデータフレームを操作する

sqldfパッケージのsqldf関数を使う。

> umamusume
no name prizemoney seiyu dummydate
1 8 ウオッカ 13.0487 大橋彩香 2031/02/03
2 30 ライスシャワー 6.6686 石見舞菜香 2032/11/12
3 45 スーパークリーク 5.5610 優木かな 2033/11/12
4 58 メイショウドトウ 9.2133 和多田美咲 2033/12/31
> library(sqldf)
> sqldf("select * from umamusume")
no name prizemoney seiyu dummydate
1 8 ウオッカ 13.0487 大橋彩香 2031/02/03
2 30 ライスシャワー 6.6686 石見舞菜香 2032/11/12
3 45 スーパークリーク 5.5610 優木かな 2033/11/12
4 58 メイショウドトウ 9.2133 和多田美咲 2033/12/31
> sqldf("select name, seiyu from umamusume where no >= 30 and no <= 50")
name seiyu
1 ライスシャワー 石見舞菜香
2 スーパークリーク 優木かな

2024年3月17日 (日)

[R]条件式で条件を設定してエラーを出す

stopifnot関数を使う。引数に与えた一つ以上の式が一つでもFALSEの場合は、エラーを出す。スクリプトでうまく使えばデバッグに利用できる。

> no <- 58
> umamusume <- "メイショウドトウ"
> cv <- "和多田美咲"
> stopifnot(no == 58)
> stopifnot(no == 58, umamusume == "メイショウドトウ")
> stopifnot(no == 58, umamusume == "メイショウドトウ", cv == "石見舞菜香")
エラー: cv == "石見舞菜香" は TRUE ではありません
> for (i in 1:5) {stopifnot(i < 3); cat(i, "\n")}
1
2
エラー: i < 3 は TRUE ではありません

2024年3月16日 (土)

[R]二つのtibbleを一つに結合(内部結合)する

内部結合(結合すべき行がない行は出力しない結合)するには、inner_join関数を使う。以下はあらかじめ用意した二つのtibbleを内部結合した例。結合相手がない左側(tib1)の4行目と右側(tib2)の4行目は出力されていないことがわかる。

> library(tidyverse)
> tib1 %>% as.data.frame()
nama title no cv
1 ライスシャワー ウマ娘 30 miwami01
2 スーパークリーク ウマ娘 45 kyuki01
3 メイショウドトウ ウマ娘 58 mwatada01
4 ライザ ライザのアトリエ2 1 ynoguchi01
5 フィー ライザのアトリエ2 2 mwatada01
6 黒川あかね 推しの子 6 miwami01
> tib2 %>% as.data.frame()
id name
1 miwami01 石見舞菜香
2 kyuki01 優木かな
3 mwatada01 和多田美咲
4 machico01 Machico
> tib1 %>% inner_join(tib2, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv name
1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香
2 スーパークリーク ウマ娘 45 kyuki01 優木かな
3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲
4 フィー ライザのアトリエ2 2 mwatada01 和多田美咲
5 黒川あかね 推しの子 6 miwami01 石見舞菜香

2024年3月15日 (金)

[R]二つのtibbleを一つに結合(完全外部結合)する

完全外部結合(左右すべての行を必ず出力する結合)するには、full_join関数を使う。以下はあらかじめ用意した二つのtibbleを完全外部結合した例。

> library(tidyverse)
> tib1 %>% as.data.frame()
nama title no cv
1 ライスシャワー ウマ娘 30 miwami01
2 スーパークリーク ウマ娘 45 kyuki01
3 メイショウドトウ ウマ娘 58 mwatada01
4 ライザ ライザのアトリエ2 1 ynoguchi01
5 フィー ライザのアトリエ2 2 mwatada01
6 黒川あかね 推しの子 6 miwami01
> tib2 %>% as.data.frame()
id name
1 miwami01 石見舞菜香
2 kyuki01 優木かな
3 mwatada01 和多田美咲
4 machico01 Machico
> tib1 %>% full_join(tib2, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv name
1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香
2 スーパークリーク ウマ娘 45 kyuki01 優木かな
3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲
4 ライザ ライザのアトリエ2 1 ynoguchi01
5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲
6 黒川あかね 推しの子 6 miwami01 石見舞菜香
7 <NA> <NA> NA machico01 Machico

2024年3月13日 (水)

[R]二つのtibbleを一つに結合(右外部結合)する

右外部結合(右側のすべての行を必ず出力する結合)するには、right_join関数を使う。以下はあらかじめ用意した二つのtibbleを右外部結合した例。右側(tib2)の4行目は左側(tib1)に結合相手が見つからないため、列にNAを挿入して6行目に出力されていることがわかる。

> library(tidyverse)
> tib1 %>% as.data.frame()
nama title no cv
1 ライスシャワー ウマ娘 30 miwami01
2 スーパークリーク ウマ娘 45 kyuki01
3 メイショウドトウ ウマ娘 58 mwatada01
4 ライザ ライザのアトリエ2 1 ynoguchi01
5 フィー ライザのアトリエ2 2 mwatada01
6 黒川あかね 推しの子 6 miwami01
> tib2 %>% as.data.frame()
id name
1 miwami01 石見舞菜香
2 kyuki01 優木かな
3 mwatada01 和多田美咲
4 machico01 Machico
> tib1 %>% right_join(tib2, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv name
1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香
2 スーパークリーク ウマ娘 45 kyuki01 優木かな
3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲
4 フィー ライザのアトリエ2 2 mwatada01 和多田美咲
5 黒川あかね 推しの子 6 miwami01 石見舞菜香
6 <NA> <NA> NA machico01 Machico

2024年3月12日 (火)

[R]変数(ベクトル)を使用する

プログラミング言語やスクリプト言語における変数とは、いろいろな計算や処理のために数値や文字などを一時的に格納しておくためのもの。変数には任意の名前を付けることができる。作成できる変数の数に制限はなく、必要な種類の変数を必要なだけ作成することができる。

C++やJavaなどのプログラミング言語と異なり、Rでは変数を作成するための変数の宣言はしなくてもよい(してもよい)。変数に値を代入することが宣言を兼ねている。なお、Rには変数というものは存在せず、変数に相当するものはベクトル(厳密にはオブジェクト)という。代入には代入演算子<-を使う。=も使うことができるが、推奨しない。

> n
エラー: オブジェクト 'n' がありません
> s
エラー: オブジェクト 's' がありません
> n <- 58
> s <- "メイショウドトウ役の和多田美咲さんかわいい"
> n
[1] 58
> s
[1] "メイショウドトウ役の和多田美咲さんかわいい"

2024年3月11日 (月)

[R]代入した結果を表示する

コマンドラインでベクトルなどに値を代入すると、画面には何も表示されないが、この代入を( )(括弧)で囲むと、代入した結果を表示するようになる。デバッグ時などに利用すると便利。

> s1 <- "鈴木みのり"
> print(s1)
[1] "鈴木みのり"
> (s2 <- "和多田美咲")
[1] "和多田美咲"
> print(s2)
[1] "和多田美咲"

2024年3月10日 (日)

[C#]リストに要素を追加する

Addメソッドは最後に要素を追加する。Insertメソッドは指定のインデックス(0~)の箇所に要素を追加する。

using System;
using System.Collections.Generic;
List names = new List();
names.Add("ライスシャワー");
foreach (string s in names) {
Console.WriteLine($"A: {s}");
}
names.Add("メイショウドトウ");
names.Add("サクラチヨノオー");
foreach (string s in names) {
Console.WriteLine($"B: {s}");
}
names.Insert(1, "スーパークリーク");
foreach (string s in names) {
Console.WriteLine($"C: {s}");
}

実行結果

A: ライスシャワー
B: ライスシャワー
B: メイショウドトウ
B: サクラチヨノオー
C: ライスシャワー
C: スーパークリーク
C: メイショウドトウ
C: サクラチヨノオー

2024年3月 9日 (土)

[C#]リストを作成する

Listクラスを使う。あらかじめusing命令でSystem.Collections.Generic名前空間を指定しておくと便利。

using System;
using System.Collections.Generic;
List names = new List();
names.Add("ライスシャワー");
names.Add("メイショウドトウ");
names.Add("サクラチヨノオー");
foreach (string s in names) {
Console.WriteLine(s);
}

実行結果

ライスシャワー
メイショウドトウ
サクラチヨノオー

2024年3月 8日 (金)

[C#]エラー「CS8370 機能 'target-typed オブジェクトの作成' は C# 7.3 では使用できません。9.0 以上の言語バージョンをお使いください。」

Visual Studio 2022でプロジェクトを読み込んでコンパイルなどをした際に、このようなエラーメッセージが表示されることがある。例えば、以下のような一文を入力すると、赤波線が表示されてエラーが発生していることがわかる。

List<string> memo = new();

これはプロジェクトの言語バージョンが適切に指定されていない。プロジェクトファイルに最新バージョンを使うように指定すればよい。

ソリューションエクスプローラーのプロジェクト名のところで右クリックして、コンテキストメニューの「プロジェクトのアンロード」をクリック。プロジェクト名の最後に「(アンロード済み)」が表示される。

プロジェクト名をダブルクリックする。プロジェクトファイルが表示される。

以下の3行を追加する。PropertyGroupがあるだろうが、そこに2行目だけ含めてもかまわない。

<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>

プロジェクトファイルを保存する。

プロジェクト名のところで右クリックして、コンテキストメニューの「プロジェクトの再読込」をクリック。プロジェクト名の最後の「(アンロード済み)」が消える。

これで、最新の構文が使えるようになる。

2024年3月 7日 (木)

[C#]StreamWriterクラスを使用して文字コードを指定してファイルに書き込む

第3引数にEncodingクラスのGetEncoding メソッドを使用してコードページを指定する。以下は四通りの方法でそれぞれ文字列をファイルに書き出した例。

OutVar.cs

using System.IO;
using System.Text;
using (var sw = new StreamWriter("result/out_default.txt", false)) {
sw.WriteLine("メイショウドトウ役の和多田美咲さん");
}
Encoding enc;
enc = Encoding.GetEncoding("shift_jis");
using (var sw = new StreamWriter("result/out_sjis.txt", false, enc)) {
sw.WriteLine("メイショウドトウ役の和多田美咲さん");
}
enc = Encoding.GetEncoding("utf-8");
using (var sw = new StreamWriter("result/out_utf8.txt", false, enc)) {
sw.WriteLine("メイショウドトウ役の和多田美咲さん");
}
enc = new UTF8Encoding();
using (var sw = new StreamWriter("result/out_utf8encoding.txt", false, enc)) {
sw.WriteLine("メイショウドトウ役の和多田美咲さん");
}

実行してみる。

>OutVar.exe
>type result\out_sjis.txt
メイショウドトウ役の和多田美咲さん
>certutil -encodehex -f out_default.txt dump.txt 10 > nul && type dump.txt
0000 e3 83 a1 e3 82 a4 e3 82 b7 e3 83 a7 e3 82 a6 e3
0010 83 89 e3 83 88 e3 82 a6 e5 bd b9 e3 81 ae e5 92
0020 8c e5 a4 9a e7 94 b0 e7 be 8e e5 92 b2 e3 81 95
0030 e3 82 93 0d 0a
>certutil -encodehex -f out_sjis.txt dump.txt 10 > nul && type dump.txt
0000 83 81 83 43 83 56 83 87 83 45 83 68 83 67 83 45
0010 96 f0 82 cc 98 61 91 bd 93 63 94 fc 8d e7 82 b3
0020 82 f1 0d 0a
>certutil -encodehex -f out_utf8.txt dump.txt 10 > nul && type dump.txt
0000 ef bb bf e3 83 a1 e3 82 a4 e3 82 b7 e3 83 a7 e3
0010 82 a6 e3 83 89 e3 83 88 e3 82 a6 e5 bd b9 e3 81
0020 ae e5 92 8c e5 a4 9a e7 94 b0 e7 be 8e e5 92 b2
0030 e3 81 95 e3 82 93 0d 0a
>certutil -encodehex -f out_utf8encoding.txt dump.txt 10 > nul && type dump.txt
0000 e3 83 a1 e3 82 a4 e3 82 b7 e3 83 a7 e3 82 a6 e3
0010 83 89 e3 83 88 e3 82 a6 e5 bd b9 e3 81 ae e5 92
0020 8c e5 a4 9a e7 94 b0 e7 be 8e e5 92 b2 e3 81 95
0030 e3 82 93 0d 0a

以上より、StreamWriterクラスの第3引数の指定と書き出されるファイルの文字コードの関係は、以下であることがわかる。

文字コードを未指定 → UTF-8(BOM付き)
Shift_JIS → Shift_JIS
UTF-8 → UTF-8(BOM無し)
UTF8Encodingクラスをそのまま指定 → UTF-8(BOM付き)

2024年3月 6日 (水)

[R]二つのtibbleを一つに結合(左外部結合)する

左外部結合(左側のすべての行を必ず出力する結合)するには、left_join関数を使う。以下はあらかじめ用意した二つのtibbleを左外部結合した例。左側(tib1)の4行目は右側(tib2)に結合相手が見つからないため、列にNAを挿入して4行目に出力されていることがわかる。

> library(tidyverse)
> tib1 %>% as.data.frame()
nama title no cv
1 ライスシャワー ウマ娘 30 miwami01
2 スーパークリーク ウマ娘 45 kyuki01
3 メイショウドトウ ウマ娘 58 mwatada01
4 ライザ ライザのアトリエ2 1 ynoguchi01
5 フィー ライザのアトリエ2 2 mwatada01
6 黒川あかね 推しの子 6 miwami01
> tib2 %>% as.data.frame()
id name
1 miwami01 石見舞菜香
2 kyuki01 優木かな
3 mwatada01 和多田美咲
4 machico01 Machico
> tib1 %>% left_join(tib2, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv name
1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香
2 スーパークリーク ウマ娘 45 kyuki01 優木かな
3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲
4 ライザ ライザのアトリエ2 1 ynoguchi01 <NA>
5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲
6 黒川あかね 推しの子 6 miwami01 石見舞菜香

2024年3月 5日 (火)

[C#]コードページ識別子の一覧を得る

コードページとはWindowsにおいて文字符号化方式を判別するためのもので、特定の文字符号化方式を表すものとしてコードページ識別子(Code Page Identifiers)というのものを割り当てて定義している。それの一覧を表示する方法。

SamplesEncoding.cs

using System;
using System.Text;
Console.Write("CodePage Identifier and Name BrDisp BrSave ");
Console.WriteLine("MNDisp MNSave 1-Byte ReadOnly");
foreach(EncodingInfo ei in Encoding.GetEncodings()) {
Encoding e = ei.GetEncoding();
Console.Write("{0,-6} {1,-25} ", ei.CodePage, ei.Name);
Console.Write("{0,-7} {1,-7} ", e.IsBrowserDisplay, e.IsBrowserSave);
Console.Write("{0,-7} {1,-7} ", e.IsMailNewsDisplay, e.IsMailNewsSave);
Console.WriteLine("{0,-7} {1,-7}", e.IsSingleByte, e.IsReadOnly);
}

動作させてみる。

>SamplesEncoding.exe
CodePage Identifier and Name BrDisp BrSave MNDisp MNSave 1-Byte ReadOnly
37 IBM037 False False False False True True
(表示省略)
65000 utf-7 False False True True False True
65001 utf-8 True True True True False True
>SamplesEncoding.exe | findstr /i "jis utf jp"
932 shift_jis True True True True False True
1200 utf-16 False True False False False True
1201 utf-16BE False False False False False True
12000 utf-32 False False False False False True
12001 utf-32BE False False False False False True
20932 EUC-JP False False False False False True
50220 iso-2022-jp False False True True False True
50221 csISO2022JP False True True True False True
50222 iso-2022-jp False False False False False True
51932 euc-jp True True True True False True
65000 utf-7 False False True True False True
65001 utf-8 True True True True False True

コードページ識別子の詳細については、以下のページを参照のこと。
https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding.getencodings?view=net-8.0#system-text-encoding-getencodings

2024年3月 4日 (月)

[C#]日本語を含む文字列の表示幅をバイト単位で指定する

C#では、内部の文字処理ではUnicodeを使用されているため、シフトJISでいうところの1バイト文字("A"や"1")と2バイト文字("A"や"あ")はいずれも一文字として扱われる。そのため、コマンドプロンプトでの画面表示などで表示位置を揃えようとすると、うまくいかないことがある。以下は、2つの文字列をそれぞれ8文字幅で左寄せで表示した例。

> string s1, s2;
> s1 = "Kaname"; s2 = "カナメ";
> Console.WriteLine("|" + $"{s1, -8}" + "|");
|Kaname |
> Console.WriteLine("|" + $"{s2, -8}" + "|");
|カナメ |

1バイト文字は一文字幅、2バイト文字は二文字幅で表示させたい場合は、その文字列をシフトJISに変換してGetByteCountメソッドで文字のバイト数を調べ、その分を考慮した長さの文字列を作成して表示させればよい。

> Encoding enc = Encoding.GetEncoding("Shift_JIS");
> string s1p, s2p;
> s1p = s1.PadRight(8 - (enc.GetByteCount(s1) - s1.Length));
> s2p = s2.PadRight(8 - (enc.GetByteCount(s2) - s2.Length));
> Console.WriteLine("|" + s1p + "|");
|Kaname |
> Console.WriteLine("|" + s2p + "|");
|カナメ |

2024年3月 2日 (土)

[C#]文字列を正規表現で置換する

RegexクラスのReplaceメソッドを使う。以下は、文字列をファイル名と想定してすべての拡張子(ピリオドを含むピリオドの右側の文字列)を削除した例。

> using System.Text.RegularExpressions;
> string s = "abc.def";
> Console.WriteLine(Regex.Replace(s, "\\..+$", ""));
abc
> string s = "abc.def.ghi";
> Console.WriteLine(Regex.Replace(s, "\\..+$", ""));
abc

2024年3月 1日 (金)

[R]MySQLのデータベースに接続する

RMySQLパッケージを使う。以下は、あらかじめサービスが稼働しているMySQLのデータベースを一覧表示させた例。データベースに接続するにはdbConnect関数を使う。dbGetQuery関数を使うことでコマンドを実行することができる。すべての作業が終了したらdbDisconnect関数で接続を切断することを忘れない。以下の1~3, 5はMySQLに最初から組み込まれているデータベースで、4のprincessは自作したデータベース。以下のとおりに動作を確認することができる。

dbConnect関数使用時は、アカウント、パスワード、接続先を指定する必要がある。以下の例では、rootアカウントでパスワードはpassとしている。hostにlocalhostを指定すると、ローカルホストに接続する。

> library(RMySQL)
> drv <- dbDriver("MySQL")
> con <- dbConnect(drv, user = 'root', password = 'pass', host = 'localhost')
> dbGetQuery(con, "show databases")
Database
1 information_schema
2 mysql
3 performance_schema
4 princess
5 sys
> dbDisconnect(con)
[1] TRUE

« 2024年2月 | トップページ | 2024年4月 »

無料ブログはココログ

■■

■■■