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

Rは、統計コンピューティング、バイオインフォマティクス、視覚化、および一般的なコンピューティングのための無料のオープンソースプログラミング言語およびソフトウェア環境です。必要な出力とともに、最小限の再現可能な例を提供してください。データには `dput()`を使用し、 `library()`呼び出しですべての非ベースパッケージを指定します。データやコードの画像を埋め込まないでください。代わりにインデントされたコードブロックを使用してください。統計関連の質問については、https://stats.stackexchange.comを使用してください。

10
関数のソースコードを表示するにはどうすればよいですか?
関数のソースコードを調べて、その機能を確認します。関数名をプロンプトに入力して、関数を出力できることを知っています。 > t function (x) UseMethod("t") <bytecode: 0x2332948> <environment: namespace:base> この場合、どういうUseMethod("t")意味ですか?たとえば、実際に使用されているソースコードを見つけるにはどうすればよいt(1:10)ですか。 私が見たときとの間に差があるUseMethodと、私が見たときstandardGenericとshowMethods場合と同様に、with? > with standardGeneric for "with" defined from package "base" function (data, expr, ...) standardGeneric("with") <bytecode: 0x102fb3fc0> <environment: 0x102fab988> Methods may be defined for arguments: data Use showMethods("with") for currently available ones. 他の場合では、R関数が呼び出されていることがわかりますが、それらの関数のソースコードを見つけることができません。 > ts.union function (..., dframe = …
551 r  function  r-faq 

14
サブセット化されたデータフレームのドロップファクターレベル
を含むデータフレームがありfactorます。subsetまたは別のインデックス関数を使用してこのデータフレームのサブセットを作成すると、新しいデータフレームが作成されます。ただし、factor変数が新しいデータフレームに存在しない場合でも、変数は元のレベルをすべて保持します。 これにより、ファセットプロットを実行するとき、または因子レベルに依存する関数を使用するときに問題が発生します。 新しいデータフレームの要素からレベルを削除する最も簡単な方法は何ですか? 次に例を示します。 df <- data.frame(letters=letters[1:5], numbers=seq(1:5)) levels(df$letters) ## [1] "a" "b" "c" "d" "e" subdf <- subset(df, numbers <= 3) ## letters numbers ## 1 a 1 ## 2 b 2 ## 3 c 3 # all levels are still there! levels(subdf$letters) ## [1] "a" "b" "c" "d" …
543 r  dataframe  r-factor  r-faq 

11
Rを再起動せずにパッケージをアンロードする方法
Rを再起動せずにパッケージをアンロードしたいと思います(主に、異なる競合するパッケージを試すときにRを再起動することは不満を感じるためですが、おそらくこれはプログラムで1つの関数を使用して別の関数を使用する可能性があります-名前空間は参照はおそらくその使用のためのより良いアイデアです)。 ?library パッケージをアンロードするオプションは表示されません。 ある提案detachパッケージをアンロードすることができますが、しかし、両方が失敗し、以下: detach(vegan) エラーdetach(vegan):無効なname引数 detach("vegan") エラーdetach("vegan"):無効なname引数 では、パッケージをアンロードするにはどうすればよいですか?
540 r  package  r-faq 



20
リストをデータフレームに変換する
ネストされたデータのリストがあります。その長さは132で、各項目は長さ20のリストです。この構造を、132行と20列のデータを持つデータフレームにすばやく変換する方法はありますか? 処理するサンプルデータを次に示します。 l <- replicate( 132, list(sample(letters, 20)), simplify = FALSE )
513 r  list  dataframe 

11
非常に大きなテーブルをデータフレームとしてすばやく読み取る
Rのデータフレームとしてロードしたい非常に大きなテーブル(3000万行)があります。 read.table()便利な機能がたくさんありますが、実装には低速化するロジックがたくさんあるようです。私の場合、列のタイプが事前にわかっており、テーブルに列ヘッダーや行名が含まれておらず、心配する必要のある病理学的文字が含まれていないと想定しています。 を使用してリストとしてテーブルを読み取るのはscan()非常に高速である可能性があることを知っています。例: datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))) しかし、これをデータフレームに変換しようとする私の試みの一部は、上記のパフォーマンスを6分の1に低下させるように見えます。 df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))) これを行うより良い方法はありますか?または、問題へのまったく異なるアプローチ?
504 r  import  dataframe  r-faq 

27
Rセッションで利用可能なメモリを管理するためのトリック
対話型Rセッションの使用可能なメモリを管理するために、どのようなトリックを使用しますか?以下の関数(2004年のPetr PikalとDavid Hindsによるr-helpリストへの投稿に基づく)を使用して、最大のオブジェクトをリスト(および/またはソート)し、場合rm()によってはそれらのいくつかをリストします。しかし、これまでで最も効果的な解決策は、十分なメモリを備えた64ビットLinuxで実行することでした。 他の人が共有したい素敵なトリックはありますか?投稿ごとに1つお願いします。 # improved list of objects .ls.objects <- function (pos = 1, pattern, order.by, decreasing=FALSE, head=FALSE, n=5) { napply <- function(names, fn) sapply(names, function(x) fn(get(x, pos = pos))) names <- ls(pos = pos, pattern = pattern) obj.class <- napply(names, function(x) as.character(class(x))[1]) obj.mode <- napply(names, mode) obj.type <- …


16
空のdata.frameを作成する
行なしでdata.frameを初期化しようとしています。基本的に、各列のデータ型を指定して名前を付けたいのですが、結果として行は作成されません。 私がこれまでにできることは、次のようなものです。 df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"), File="", User="", stringsAsFactors=FALSE) df <- df[-1,] これにより、必要なすべてのデータ型と列名を含む単一の行を含むdata.frameが作成されますが、不要な行も作成されるため、削除する必要があります。 これを行うより良い方法はありますか?
480 r  dataframe  r-faq 

7
Rでのクラスター分析:クラスターの最適な数を決定する
Rの初心者なので、k平均分析を行うために最適なクラスター数を選択する方法はよくわかりません。以下のデータのサブセットをプロットした後、いくつのクラスターが適切でしょうか?クラスターのデンドロ解析を実行するにはどうすればよいですか? n = 1000 kk = 10 x1 = runif(kk) y1 = runif(kk) z1 = runif(kk) x4 = sample(x1,length(x1)) y4 = sample(y1,length(y1)) randObs <- function() { ix = sample( 1:length(x4), 1 ) iy = sample( 1:length(y4), 1 ) rx = rnorm( 1, x4[ix], runif(1)/8 ) ry = rnorm( 1, y4[ix], …

12
Rにロードされているパッケージのバージョンを確認するにはどうすればよいですか?
私は大学のクラスターの使い方を理解している最中です。Rの2つのバージョンがインストールされています。システム全体のR 2.11(Debian 6.0)および非標準の場所にあるR 2.14.2。 雪と一緒にMPIを使用しようとしています。私が実行しようとしているコードは次のとおりです library(snow) library(Rmpi) cl <- makeMPIcluster(mpi.universe.size()-1) stopCluster(cl) mpi.quit() R 2.11では問題なく動作します。(スクリプトはで起動しますmpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R)。R 2.14.2で実行しようとすると、次のメッセージが表示されます。 Error: This is R 2.11.1, package 'snow' needs >= 2.12.1 In addition: Warning message: したがって、RはR 2.11用にコンパイルされたsnowバージョンのパッケージをロードしているようです。私はR 2.14でホームフォルダにsnowをインストールし、次の行をコードに追加しました。 .libPaths("/soft/R/lib/R/library") .libPaths("~/R/x86_64-pc-linux-gnu-library/2.11") print(.libPaths()) print(sessionInfo()) print(version) エラーが発生する前の出力では、実際にR 2.14.2を実行しており、Rパッケージフォルダーが検索パスの最初にあることが確認されます。しかし、まだエラーが発生します。 だから私の質問は、どのバージョンのパッケージがRにロードされているかをどのように判断するのですか?installed.packagesインストールされているすべてのパッケージで確認できる ので、読み込まれたパッケージの同様の情報を一覧表示する関数があるのでしょうか?
405 r  package  version 

2
`[`が `subset`より優れているのはなぜですか?
data.frameをフィルター処理する必要がある場合、つまり特定の条件を満たす行を抽出する場合は、次のsubset関数を使用します。 subset(airquality, Month == 8 & Temp > 90) [関数ではなく: airquality[airquality$Month == 8 & airquality$Temp > 90, ] 私の好みには主に2つの理由があります。 私はコードが左から右に、よりよく読みます。Rについて何も知らない人でも、subset上記のステートメントが何をしているのかわかるでしょう。 式では列を変数として参照selectできるため、いくつかのキーストロークを節約できます。上記の例では、でairquality一度入力するだけでsubset、で3回入力する必要がありました[。 それで、私は幸福に生きsubsetていました。短くて読みやすいのでどこでも使用し、その美しさを仲間のRプログラマーにさえ主張していました。しかし、昨日私の世界はバラバラになりました。subsetドキュメントを読んでいると、このセクションに気づきました。 警告 これは、インタラクティブに使用することを目的とした便利な関数です。プログラミングには、[のような標準サブセット関数を使用することをお勧めします。特に、引数サブセットの非標準評価は予期しない結果をもたらす可能性があります。 誰かが著者の意味を明確にするのを手伝ってくれませんか? まず、「インタラクティブに使用する」とはどういう意味ですか?バッチモードで実行されるスクリプトとは対照的に、対話型セッションが何であるかはわかっていますが、どのような違いがあるのか​​わかりません。 それでは、「引数サブセットの非標準の評価」と、なぜそれが危険なのか、例を挙げて説明していただけますか?
400 r  filter  subset  r-faq 


16
データフレームの列名の変更
「newprice」(以下を参照)というデータフレームがあり、Rのプログラムで列名を変更したい。 > newprice Chang. Chang. Chang. 1 100 36 136 2 120 -33 87 3 150 14 164 実際、これは何をしているのですか? names(newprice)[1]<-paste("premium") names(newprice)[2]<-paste("change") names(newprice)[3]<-paste("newprice") ご覧のとおり、各列の名前を変えたいので、これをループに入れていません。 プログラムをRコンソールに貼り付けると、次のような出力が得られます。 > names(newprice)[1]<-paste(“premium”) Error: unexpected input in "names(newprice)[1]<-paste(“" > names(newprice)[2]<-paste(“change”) Error: unexpected input in "names(newprice)[2]<-paste(“" > names(newprice)[3]<-paste(“newpremium”) Error: unexpected input in "names(newprice)[3]<-paste(“" c()関数のc("premium")代わりに関数を使用することも同様に試しましpaste()たが、役に立ちませんでした。 誰かがこれを理解するのを手伝ってくれませんか?
399 r  dataframe  rename 

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