No.22907 Rの出力について  【もも】 2020/05/01(Fri) 15:21

Rの出力方法について,基本的なことで恐縮ですが,ご教授いただけたら幸甚です。
a <- 1
b <- 3
c <- 0.5
min(a,b,c)
とすると,「0.5」と出力されますが,これを「c」と出力するにはどのようにすれば良いでしょうか。
数日間あれこれと調べてみましたが,どうしても分からず,質問させていただきました。
よろしくお願いします。

No.22908 Re: Rの出力について  【青木繁伸】 2020/05/02(Sat) 21:25

何をしたいのか本質がよく理解されないのですが。
min_value_name = function(a, b, c) {
par = c(deparse1(substitute(a)),
deparse1(substitute(b)),
deparse1(substitute(c)))
x = min(a,b,c)
print(par[which(x == c(a, b, c))])
}
のような関数を定義すると,
> a <- 1
> b <- 3
> c <- 0.5
> min_value_name(a, b, c)
[1] "c"
> x <- 2
> y <- 1
> z <- 5
> min_value_name(x, y, z)
[1] "y"
のような結果を得ることは出来ます,しかし
> min_value_name(3, 2, 1)
[1] "1"
のような使い方をすると,望む結果は得られません。

もし,引数の名前が必ず a, b, c であるなら,以下のような関数を定義することも出来ます。
f <- function(a, b, c) {
names = letters[1:3]
return(names[which(c(a, b, c) == min(c(a, b, c)))])
}
これだと,以下のような使用例になります
> f(1,2,3)
[1] "a"
> f(20, 10, 40)
[1] "b"
> f(100, 200, 10)
[1] "c"

● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る