知らなくても困らない, 忙しい人は読まないで, 暇なときに試してみると良いかも, 現実逃避になど...



回答を期待する記事は原則 Q&A (初級者コース)にお願いします。広く周知したい物はなんでも掲示板の方へ、 「知らなくても困らない機能」はそれ以外の知らなくても困らないけど現実逃避等に最適な話題にすることを提案したいと思います。





(05)キーワードのヘルプ

ひつまぶし (2007-09-01 (土) 14:21:04)

for や if などのヘルプを見るときには

> ? "for"

としなさいと書いてある。しかし,

> ? repeat""

としてもちゃんと動く。それでは,と思って以下のようにしたら,エラーになった(あたりまえだ)

> ? ""repeat
 エラー:syntax error

奇っ怪なことに,? repeat"" 以外は全部エラーになる ? for"" など

  • repeatは条件式が不要なので構文的に正しい。?while(1)1 など試すとよろしい。 -- takahashi 2007-09-01 (土) 18:34:28
  • いろいろ試すと面白い。 -- 2007-09-01 (土) 19:59:18
    > ?qnorm(1)          OK
    > ?sin(1)            NG
    > ?matrix(1:4,2,2)   OK
  • これはもしかしてエラー時にヘルプドキュメントを最小のタイピングで参照するための隠し機能?そう思えば便利。 -- 2007-09-01 (土) 20:03:16
    > log(-0.3)
    [1] NaN
    Warning message:
     計算結果が NaN になりました in: log(x) 
    > ?log(-0.3)    # ヒストリ機能を使えばキー操作3回で入力できる!
  • ?はutils(question.R)に定義されたトリックな関数です(`?`バックチック等で挟むと見えます).構文が不完全な状態でも見たいとか○○なユーザを満足させるにはパーサー上で組み込むしかないです.;-p -- なかま 2007-09-03 (月) 09:18:22
  • 隠し機能ではなくちゃんと help(help) に説明がありましたね.S4 クラス・メソッドは独自のドキュメントを持つ機能がありますが、そうしたもの(メソッドと特定のタイプの引数の組合せに対するドキュメント)を参照するようです.ということは、三角関数で失敗するのは完全なS4化がされていないから?ついでに  class ? lm といった使いかたの解説もありました。 -- 2007-09-03 (月) 10:36:27
  • S4でもS3でも, 名前空間がある関数では問題は(たぶん!)無いです. 一部Primitiveな関数だけだと思います. "?1%*%1"は出るが,"?1%/%1"はでないとか. -- なかま 2007-09-03 (月) 13:54:04

(04)関数呼び出しの引数に=による代入構文

=はよいと思うが (2007-05-28 (月) 16:12:39)

なんでか,突き詰めるのも面倒なのだが

> order(x=1:10)
 [1]  1  2  3  4  5  6  7  8  9 10
> x
 エラー: オブジェクト "x" は存在しません

となるが,

> order((x=1:10))
 [1]  1  2  3  4  5  6  7  8  9 10
> x
 [1]  1  2  3  4  5  6  7  8  9 10

となる不思議

> order({x=1:10})
 [1]  1  2  3  4  5  6  7  8  9 10
> x
 [1]  1  2  3  4  5  6  7  8  9 10

でも同じ。後者は ? "=" に書いてある。

> plot({x=1:10; y=x^2})
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> y
 [1]   1   4   9  16  25  36  49  64  81 100

などというのは,おもしろいですか?


(03)`:='演算子(知らないとドツボにはまる落とし穴-5より転載)

なかま (2007-02-16 (金) 14:56:17)

パーサ上には定義されているが, 動作させる関数が定義されていない?謎の演算子.
もしかしたら, ちゃんと用途があるのかも知れないが, コードより多いRのドキュメント内には
見当たりません.(空目かも...)
Pascal風?に習って代入演算子に仕立ててみました.

":=" <- function (x, value)
{
    assign(deparse(substitute(x)), value, envir = parent.env(environment()))
}
hoge := runif(100) * 1000

(02)総称関数の一覧

なかま (2006-02-02 (木) 11:13:12)

> names(.knownS3Generics)  # S3だけですが~
 [1] "Math"          "Ops"           "Summary"       "Complex"
 [5] "as.character"  "as.data.frame" "as.matrix"     "as.vector"
 [9] "labels"        "print"         "solve"         "summary"
[13] "t"             "edit"          "str"           "contour"
[17] "hist"          "identify"      "image"         "lines"
[21] "pairs"         "plot"          "points"        "text"
[25] "add1"          "AIC"           "anova"         "biplot"
[29] "coef"          "confint"       "deviance"      "df.residual"
[33] "drop1"         "extractAIC"    "fitted"        "formula"
[37] "logLik"        "model.frame"   "model.matrix"  "predict"
[41] "profile"       "qqnorm"        "residuals"     "se.contrast"
[45] "terms"         "update"        "vcov"

(01)閏秒

なかま (2006-01-30 (月) 10:21:40)

今年の元旦に挿入された閏秒のサポートは2.3.0以降です.

> .leap.seconds
 [1] "1972-07-01 09:00:00 JST" "1973-01-01 09:00:00 JST"
 [3] "1974-01-01 09:00:00 JST" "1975-01-01 09:00:00 JST"
 [5] "1976-01-01 09:00:00 JST" "1977-01-01 09:00:00 JST"
 [7] "1978-01-01 09:00:00 JST" "1979-01-01 09:00:00 JST"
 [9] "1980-01-01 09:00:00 JST" "1981-07-01 09:00:00 JST"
[11] "1983-07-01 09:00:00 JST" "1985-07-01 09:00:00 JST"
[13] "1986-07-01 09:00:00 JST" "1988-01-01 09:00:00 JST"
[15] "1990-01-01 09:00:00 JST" "1991-01-01 09:00:00 JST"
[17] "1992-07-01 09:00:00 JST" "1993-07-01 09:00:00 JST"
[19] "1994-07-01 09:00:00 JST" "1996-01-01 09:00:00 JST"
[21] "1997-07-01 09:00:00 JST" "1999-01-01 09:00:00 JST"



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17