タグ付けされた質問 「r-faq」

r-faqタグは、Rタグで定期的に発生する問題について議論する限られた数の質問をグループ化するために作成されます。R for SOの公式FAQではありませんが、一般的な問題に関する興味深い情報源として役立つはずです。

6
Rで「S3メソッド」とはどういう意味ですか?
私はRにかなり慣れているので、S3メソッドとオブジェクトが何であるかわかりません。S3とS4のオブジェクトシステムがあり、可能であればS4よりもS3を使用することをお勧めします(http://google-styleguide.googlecode.com/svn/trunk/google-r-styleにある GoogleのRスタイルガイドを参照してください。 html)*。しかし、私はS3メソッド/オブジェクトの正確な定義を知りません。 更新:2019年現在、GoogleのRスタイルガイドのハイパーリンクがここにあります。
124 r  oop  r-faq  r-s3  r-s4 

14
各グループ内の行数を数える
データフレームがあり、各グループ内の行数をカウントしたいと思います。私は通常aggregate、次のようにデータを合計する関数を使用します。 df2 <- aggregate(x ~ Year + Month, data = df1, sum) 今、私は観察を数えたいのですが、の適切な議論を見つけることができないようですFUN。直感的には、次のようになると思いました。 df2 <- aggregate(x ~ Year + Month, data = df1, count) しかし、そのような運はありません。 何か案は? おもちゃのデータ: set.seed(2) df1 <- data.frame(x = 1:20, Year = sample(2012:2014, 20, replace = TRUE), Month = sample(month.abb[1:3], 20, replace = TRUE))
121 r  dataframe  aggregate  r-faq 

13
Rでのデバッグに関する一般的な提案
私が書いたR関数を使用するとエラーが発生します。 Warning messages: 1: glm.fit: algorithm did not converge 2: glm.fit: algorithm did not converge 私がやった事: 関数をステップ実行 エラーが発生する行を見つけるためにprintを追加すると、使用すべきでない2つの関数が示唆されますglm.fit。彼らはあるwindow()とsave()。 私の一般的なアプローチには、追加printとstopコマンド、および例外を見つけることができるまで関数を1行ずつステップ実行することが含まれます。 ただし、このエラーがコード内で発生する手法を使用することは私には明らかではありません。コード内のどの関数が依存しているかさえわかりませんglm.fit。この問題を診断するにはどうすればよいですか?
120 r  debugging  r-faq 

8
$と文字値を使用してデータフレーム列を動的に選択する
さまざまな列名のベクトルがあり、それぞれをループしてdata.frameからその列を抽出できるようにしたいと考えています。たとえばmtcars、文字セットに格納されているデータセットといくつかの変数名を考えてみますcols。のmtcars動的サブセットを使用して変数を選択しようとすると、colsこれらの作業のネザー cols <- c("mpg", "cyl", "am") col <- cols[1] col # [1] "mpg" mtcars$col # NULL mtcars$cols[1] # NULL これらに同じ値を返すようにするにはどうすればよいですか mtcars$mpg さらに、すべての列をループして、colsある種のループで値を取得する方法を教えてください。 for(x in seq_along(cols)) { value <- mtcars[ order(mtcars$cols[x]), ] }
120 r  dataframe  r-faq 

5
data.frame列名を関数に渡します
data.frame(x)とa を受け入れる関数を記述しようとしていますcolumn。関数はxに対していくつかの計算を実行し、後で別のdata.frameを返します。関数に列名を渡すためのベストプラクティスメソッドにこだわっています。 以下の2つの最小限の例fun1では、例としてを使用してでfun2操作を実行できるため、望ましい結果が得られます。ただし、どちらも一見(少なくとも私には)エレガントではないx$columnmax() にsubstitute()、そしておそらくeval() 列名を文字ベクトルとして渡す必要があります。 fun1 <- function(x, column){ do.call("max", list(substitute(x[a], list(a = column)))) } fun2 <- function(x, column){ max(eval((substitute(x[a], list(a = column))))) } df <- data.frame(B = rnorm(10)) fun1(df, "B") fun2(df, "B") fun(df, B)たとえば、関数をとして呼び出せるようにしたいと思います。私が検討したが試していない他のオプション: column列番号の整数として渡します。これは回避すると思いますsubstitute()。理想的には、関数はどちらかを受け入れることができます。 with(x, get(column))、しかし、それが機能しても、これにはまだ必要だと思います substitute 利用するformula()とmatch.call()、どちらも私はと多くの経験を持っているの。 副質問:do.call()優先されeval()ますか?
119 r  dataframe  r-faq 



2
UNIXエポックを日付オブジェクトに変換
私は均一に分布した時系列にプロットして計算を実行しています。タイムスタンプは現在、UNIXエポック(例:)からの秒数を表す整数として格納されています1352068320が、Dateオブジェクトはプロットにより適しているようです。どうすれば変換できますか? 私が読んだ?Date、?as.Dateそして??epoch、しかし、その情報を見逃しているように見えます。
118 r  time  r-faq 

11
桁区切り記号としてカンマが含まれている数値がある場合にデータを読み取る方法は?
私は数値の一部は、例えば桁区切りとしてカンマで文字列として表現されているCSVファイル持っている"1,513"代わりにします1513。データをRに読み込む最も簡単な方法は何ですか? 私はを使用できますがread.csv(..., colClasses="character")、それらの列を数値に変換する前に、関連する要素からコンマを取り除く必要があり、そのためのきちんとした方法を見つけることができません。
117 r  csv  r-faq 

7
Rスクリプトのスケジューリング
データベースから一部のデータをプルし、それにいくつかの操作を実行して、出力を新しいデータベースにポストするRスクリプトを作成しました。 このスクリプトを毎日特定の時間に実行したいのですが、効果的に実行する方法が見つかりません。 この問題を解決するために私が見ることができるリソースを誰かが推薦できますか?このスクリプトをWindowsマシンで実行しています。
113 r  windows  schedule  r-faq 

7
「添え字の小さい要素」を含むすべての重複行の検索
R duplicatedは、ベクトルまたはデータフレームの各要素が、添え字の小さい要素の複製かどうかを示すベクトルを返します。したがって、5行のデータフレームの行3、4、および5が同じであるduplicated場合、ベクトルを取得します FALSE, FALSE, FALSE, TRUE, TRUE しかし、この場合、私は実際に取得したい FALSE, FALSE, TRUE, TRUE, TRUE つまり、添え字の大きい行によって行が重複しているかどうかを知りたいのです。
111 r  duplicates  r-faq 

3
Rでの印刷出力の10進桁数の制御
Rには、桁の表示を制御するためのオプションがあります。例えば: options(digits=10) Rセッション終了までの計算結果を10桁で表示することになっています。Rのヘルプファイルでは、digitsパラメータの定義は次のとおりです。 桁数:数値を印刷するときに印刷する桁数を制御します。これは単なる提案です。有効な値は1 ... 22デフォルトで7 したがって、これは単なる提案であると述べています。多かれ少なかれ常に10桁を表示したい場合はどうなりますか? 2つ目の質問は、22桁を超える数値を表示したい場合、つまり100桁のようなより正確な計算を行う場合はどうなりますか?ベースRで可能ですか、それとも追加のパッケージ/機能が必要ですか? 編集: jmoyの提案のおかげで、私は試してみsprintf("%.100f",pi)ました [1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000" 小数点以下48桁です。これはRが処理できる最大制限ですか?

5
<マイコード>のエラー:タイプ「クロージャー」のオブジェクトはサブセット化できません
ようやく、こすり落とすためのコードを作成することができました。正常に動作しているように見え、突然再度実行すると、次のエラーメッセージが表示されました。 Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_", : object of type 'closure' is not subsettable コードで何も変更していないので、なぜかわかりません。 お知らせ下さい。 library(XML) library(plyr) names &lt;- c("George Clooney", "Kevin Costner", "George Bush", "Amar Shanghavi") for(i in 1:length(names)) { url[i] = paste('http://en.wikipedia.org/wiki/', gsub(" ","_", names[i]) , sep="") # some parsing code }
110 r  r-faq 

6
列内のカンマ区切りの文字列を個別の行に分割する
次のようなデータフレームがあります。 data.frame(director = c("Aaron Blaise,Bob Walker", "Akira Kurosawa", "Alan J. Pakula", "Alan Parker", "Alejandro Amenabar", "Alejandro Gonzalez Inarritu", "Alejandro Gonzalez Inarritu,Benicio Del Toro", "Alejandro González Iñárritu", "Alex Proyas", "Alexander Hall", "Alfonso Cuaron", "Alfred Hitchcock", "Anatole Litvak", "Andrew Adamson,Marilyn Fox", "Andrew Dominik", "Andrew Stanton", "Andrew Stanton,Lee Unkrich", "Angelina Jolie,John Stevenson", "Anne …
109 r  string  split  r-faq 

10
複数行コメントの回避策?
私は(ある程度)すでにこの質問に対する答えを知っています。しかし、私はそれがRユーザーリストで頻繁に尋ねられるものであると考え、1つの確かな良い答えがあるはずです。 私の知る限りでは、Rには複数行のコメント機能はありません。では、誰かに良い回避策はありますか? Rでのかなりの作業は通常、インタラクティブセッション(複数行コメントの必要性に疑問を投げかける)を伴いますが、同僚やクラスメートにスクリプトを送信しなければならない場合があります。そして、他の言語から来る人々にとって、それはかなり自然な質問です。 過去には、引用符を使用しました。文字列は改行をサポートするため、Rスクリプトを実行して " Here's my multiline comment. " a &lt;- 10 rocknroll.lm &lt;- lm(blah blah blah) ... 正常に動作します。誰かがより良い解決策を持っていますか?
108 r  comments  r-faq 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.