自分では思ってもいなかった挙動だったので、ちょっとした衝撃でした。
やっていたことは、
- 引数に文字列の vector を受け取る関数を作成した。
- その後、同様の処理内容で引数に文字列を受け取る関数が欲しかった。
なので、以下を調べ始めた。- 引数の型を判定して分岐するか?
- ジェネリック関数にするべきなのか?
結果としては、そのまま使えるんかい、と。
該当のコードを簡略化すると、以下の様なものでした。
test <- function (names) {
print(typeof(names))
sapply(seq(names), function (i) {
paste0(i, "=", names[i])
})
}
test(c("hoge", "foo", "bar"))
Google Colab で実行した結果は以下の通り。
names の型は character と言われますね。
[1] "character"
'1=hoge''2=foo''3=bar'
次は文字列を渡してみます。
test("piyo")
結果は、
[1] "character"
'1=piyo'
と、期待通りです。
疑問に思った部分を実行してみました。
seq("piyo")
"piyo"[1]
1
'piyo'
大丈夫なんですね。
今まで自分が経験してきた言語とは別物で中々興味深い。
コメント