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

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


3
観察によってヒストグラム観察を構築するためにgganimateを使用しますか?より大きなデータセット(〜n = 5000)で機能する必要がある
報奨金は、期限が切れる明日。この質問への回答は、+ 200の評判バウンティの対象となります。 maxは信頼できるソースからの回答を探しています。 正規分布からポイントをサンプリングしgganimate、最後のフレームに完全なドットプロットが表示されるまで、パッケージを使用してドットプロットを1つずつ作成します。 大規模なデータセット〜5,000〜20,000ポイントで機能するソリューションが不可欠です。 ここに私がこれまでに持っているコードがあります: library(gganimate) library(tidyverse) # Generate 100 normal data points, along an index for each sample samples <- rnorm(100) index <- seq(1:length(samples)) # Put data into a data frame df <- tibble(value=samples, index=index) dfは次のようになります。 > head(df) # A tibble: 6 x 2 value index <dbl> <int> …

1
データテーブルをフィルタリングする場合のANDingを介したチェーンのパフォーマンス上の利点
私は同様のタスクを1行にまとめる癖があります。例えば、私は上のフィルタに必要がある場合はa、b、およびcデータテーブルに、私は1つにそれらを一緒に出してあげる[]論理積を持ちます。昨日、私は特定のケースではこれが信じられないほど遅く、代わりにチェイニングフィルターをテストしたことに気付きました。以下に例を示します。 まず、乱数ジェネレータをシードし、data.tableをロードして、ダミーデータセットを作成します。 # Set RNG seed set.seed(-1) # Load libraries library(data.table) # Create data table dt <- data.table(a = sample(1:1000, 1e7, replace = TRUE), b = sample(1:1000, 1e7, replace = TRUE), c = sample(1:1000, 1e7, replace = TRUE), d = runif(1e7)) 次に、メソッドを定義します。最初のアプローチでは、フィルターを連鎖させます。2番目は、フィルターをAND演算します。 # Chaining method chain_filter <- function(){ dt[a %between% …
12 r  data.table 

1
Rの「サンプル」関数のベンチマーク
私はsampleRで関数をベンチマークし、それを比較igraph:sample_seqして、奇妙な結果に出会いました。 私が次のようなものを実行すると: library(microbenchmark) library(igraph) set.seed(1234) N <- 55^4 M <- 500 (mbm <- microbenchmark(v1 = {sample(N,M)}, v2 = {igraph::sample_seq(1,N,M)}, times=50)) 私はこのような結果を得ます: Unit: microseconds expr min lq mean median uq max neval v1 21551.475 22655.996 26966.22166 23748.2555 28340.974 47566.237 50 v2 32.873 37.952 82.85238 81.7675 96.141 358.277 50 でも走ると例えば set.seed(1234) N …
11 r  random 

2
アルファの美学は単純な形ではなく矢の骨格を示しています-それを防ぐ方法は?
バーの端に矢印のあるバープロットを作成することを目指しています。私は定義されたと行きましgeom_segmentたarrow。1つの列を透明度にマップしたいのですが、アルファの美観が矢印オブジェクトでうまく機能しないようです。コードスニペットは次のとおりです。 tibble(y = c(10, 20, 30), n = c(300, 100, 200), transparency = c(10, 2, 4)) %>% ggplot() + geom_segment(aes(x = 0, xend = n, y = y, yend = y, alpha = transparency), colour = 'red', size = 10, arrow = arrow(length = unit(1.5, 'cm'), type = 'closed')) + …
11 r  ggplot2  geom-bar 

6
rの重複する行を識別してマークする
2つの列に基づいて重複行を識別してマークを付けたいのですが。行が重複していることだけでなく、どの行と重複しているかがわかるように、重複ごとに一意の識別子を作成したいと思います。以下のようなデータフレームがあり、重複したアイテムのペア(フィットとシット)と、重複していない他のペアがあります。アイテムのペアは複製されますが、それらに含まれる情報は一意です(たとえば、1つの行のValue1には1つの行の値がありますが、Value2とValue 3ではありません。 Value1ではありません) 現在のデータフレーム value1 value2 value3 fit sit [1,] "1" NA NA "it1" "it2" [2,] NA "3" "2" "it2" "it1" [3,] "2" "3" "4" "it3" "it4" [4,] NA NA NA "it4" "it3" [5,] "5" NA NA "it5" "it6" [6,] NA NA "2" "it6" "it5" [7,] NA "4" NA "it7" …
11 r  dataframe 

6
文字列を分割し、文字列内のフィールドの名前を取得します
情報を含む列をいくつかの列に分割する必要があります。 私は使用しますtstrsplitが、同じ種類の情報は行間で同じ順序ではなく、変数内の新しい列の名前を抽出する必要があります。知っておくべき重要事項:多くの情報(フィールドが新しい変数になる)があり、それらすべてを知っているわけではないため、「フィールドごとの」ソリューションは必要ありません。 以下は私が持っているものの例です: library(data.table) myDT <- structure(list(chr = c("chr1", "chr2", "chr4"), pos = c(123L, 435L, 120L), info = c("type=3;end=4", "end=6", "end=5;pos=TRUE;type=2" )), class = c("data.table", "data.frame"), row.names = c(NA,-3L)) # chr pos info #1: chr1 123 type=3;end=4 #2: chr2 435 end=6 #3: chr4 120 end=5;pos=TRUE;type=2 そして、私は入手したいと思います: # chr pos end …
11 r  data.table  reshape 

1
特定の行を条件にしながら複数の列を動的に変更する
この辺りに似たような質問がいくつかあることは知っていますが、私が抱えている正確な問題に対応しているようには見えません。 set.seed(4) df = data.frame( Key = c("A", "B", "A", "D", "A"), Val1 = rnorm(5), Val2 = runif(5), Val3 = 1:5 ) Key == "A"である行の値列の値をゼロ化したいと思います。列名はgrep: cols = grep("Val", names(df), value = TRUE) 通常、この場合に必要data.tableなことを達成するには、次のようにします。 library(data.table) df = as.data.table(df) df[Key == "A", (cols) := 0] そして、望ましい出力は次のようになります: Key Val1 Val2 Val3 1 A …
11 r  dplyr  data.table 

5
すべてのソース関数を取得する
Rでは、source()いくつかの関数をロードするために使用しています。 source("functions.R") このファイルで定義されているすべての関数のリストを取得することは可能ですか?関数名として。(多分source()それ自体が何らかの形でそれを返すことができますか?)。 PSは:最後に呼び出すことであろうsource()ような二時間をlocal({ source(); })、次にんls()内側とフィルタ機能が、それはあまりにも複雑だ-簡単かつ少ない不器用な解決策はありますか?
11 r 

6
複数の列としきい値に基づいてデータフレームをマージする
私は2つの持っているdata.frame(:ここでは、複数の共通の列とSをdate、city、ctry、および(other_)number)。 上記の列でそれらをマージしたいと思いますが、ある程度の違いは許容します。 threshold.numbers <- 3 threshold.date <- 5 # in days dateエントリ間の差が> threshold.date(日単位 )またはの場合> threshold.numbers、行をマージしたくありません。同様に、のエントリがcity他dfののエントリのサブストリングである場合city行をマージする必要があります。[誰もが実際の都市名をテストするために、より良いアイデアを持っている場合は類似性、私は。それを聞いて幸せになるだろう(そして、最初のキープdfさんのエントリをdate、cityそしてcountry両方の(other_)number列と内の他のすべての列df。 次の例を考えてみます。 df1 <- data.frame(date = c("2003-08-29", "1999-06-12", "2000-08-29", "1999-02-24", "2001-04-17", "1999-06-30", "1999-03-16", "1999-07-16", "2001-08-29", "2002-07-30"), city = c("Berlin", "Paris", "London", "Rome", "Bern", "Copenhagen", "Warsaw", "Moscow", "Tunis", "Vienna"), ctry = c("Germany", "France", "UK", "Italy", "Switzerland", "Denmark", …
11 r  dataframe 

2
複数列ファセット関数の作成
関数inにfacet_multi_col()似た関数を作成しようとしています-これは、スペース引数(では使用できません)を含むファセットレイアウトを可能にしますが、複数の列に渡ります。以下の最後のプロット(で作成された)のように、各ファセットの高さは使用するカテゴリ変数に基づいて変化するため、ファセットを行全体に揃える必要はありません。facet_col()ggforcefacet_wrap()grid.arrange()y 私はggproto、拡張ガイドを読んだことで、自分の深みからうまく自分を見つけています。最善のアプローチは、レイアウトマトリックスを渡して、データの対応するサブセットの列をfacet_col 分割する場所を指示し、ggforceで構築してスペースパラメーターを含めることです-質問の最後を参照してください。 私の不十分なオプションの簡単な説明 ファセットなし library(tidyverse) library(gapminder) global_tile <- ggplot(data = gapminder, mapping = aes(x = year, y = fct_rev(country), fill = lifeExp)) + geom_tile() global_tile 大陸別にプロットを分解したい。こんなに長い姿は欲しくない。 facet_wrap() global_tile + facet_wrap(facets = "continent", scales = "free") facet_wrap()を使用coord_equal()すると、エラーがスローされ、各大陸でタイルのサイズが異なることを意味するスペース引数がありません ggforceのfacet_col() library(ggforce) global_tile + facet_col(facets = "continent", scales = "free", space = "free", …

1
ポイントが留まり、線がフェードするgananimateプロット
これは、アニメーション化したい静的プロットの再現可能な例です(MCMCサンプラーの動作を示したい)。 library(tidyverse) library(gganimate) set.seed(1234) plot_data <- tibble(x=cumsum(rnorm(100)), y=cumsum(rnorm(100)), time=1:length(x)) ggplot(data=plot_data, aes(x=y, y=x)) + geom_point() + geom_line() 私が見たいのは、ポイントが描画されて少しフェードアウトしたときに表示されるポイントです(つまり、アルファは1から0.3に変わります)。最近の履歴のみを表示するラインがあります(理想的には、最新の履歴は最も色あせが少なく、数歩以上前に完全に消えています)。 次は、ポイントに必要なものをほぼ達成します(つまり、最後のいくつかのポイントを接続するフェージングラインをこれに追加したいだけです。ポイントは、いくつかのフレームでゆっくりとフェージングがさらに良くなります)。 ggplot(data=plot_data, aes(x=y, y=x)) + geom_point() + transition_time(time) + shadow_mark(past = T, future=F, alpha=0.3) 私が苦労しているのは、ポイントとラインなど、2つのジオメトリに2つの異なる動作を追加する方法です。たとえば、以下では点が消え(私はそれらが欲しくない)、線は消えません(私はそれらが欲しがります)。 p <- ggplot(data=plot_data, aes(x=y, y=x)) + geom_point() + transition_time(time) + shadow_mark(past = T, future=F, alpha=0.3) p + geom_line() …

2
R ggplot2:facet_wrapで変数の値に応じてy軸に名前を付けるにはどうすればよいですか?
データのアイデアをお伝えします。そうすれば、私が達成しようとしていることを理解するのが容易になるはずです。 Repex: ID <- c(1, 1, 2, 3, 3, 3) cat <- c("Others", "Others", "Population", "Percentage", "Percentage", "Percentage") logT <- c(2.7, 2.9, 1.5, 4.3, 3.7, 3.3) m <- c(1.7, 1.9, 1.1, 4.8, 3.2, 3.5) aggr <- c("median", "median", "geometric mean", "mean", "mean", "mean") over.under <- c("overestimation", "overestimation", "underestimation", "underestimation", "underestimation", …
10 r  ggplot2 

1
R:独自の勾配ブースティングアルゴリズムを実装する
独自の勾配ブースティングアルゴリズムを記述しようとしています。私はそこのような既存のパッケージがあり理解gbmし、xgboost,しかし、私はしているアルゴリズムは、独自に書き込むことによって、どのように動作するかを理解したかったです。 irisデータセットを使用していますが、結果はSepal.Length(継続的)です。私の損失関数はmean(1/2*(y-yhat)^2)(基本的には前に1/2の平均二乗誤差)であるため、対応する勾配はただの残差y - yhatです。予測を0に初期化しています。 library(rpart) data(iris) #Define gradient grad.fun <- function(y, yhat) {return(y - yhat)} mod <- list() grad_boost <- function(data, learning.rate, M, grad.fun) { # Initialize fit to be 0 fit <- rep(0, nrow(data)) grad <- grad.fun(y = data$Sepal.Length, yhat = fit) # Initialize model mod[[1]] <- fit # …

1
ggplot2のgeom_pointのnpc座標
どのように私は得ることができますのx、yの座標geom_pointでggplot参照フレームが全体のプロットイメージですか、? 私はいくつかのgeom_pointを使ってggplotを作成できます: library(ggplot2) my.plot <- ggplot(data.frame(x = c(0, 0.456, 1), y = c(0, 0.123, 1))) + geom_point(aes(x, y), color = "red") これは与える: これをgrobに変換することにより、紫色の矢印でマークされた、プロットパネルに関する座標など、このggplotに関する追加情報を抽出できます。ただし、これは軸が占めるスペースを無視します。 my.grob <- ggplotGrob(my.plot) my.grob$grobs[[6]]$children[[3]]$x # [1] 0.0454545454545455native 0.46native 0.954545454545454native my.grob$grobs[[6]]$children[[3]]$y # [1] 0.0454545454545455native 0.157272727272727native 0.954545454545454native 緑の矢印でマークされた画像全体の左下隅から測定を開始するときに、x、y座標の値を取得するにはどうすればよいですか? 可能であれば、ggplotのテーマを考慮した解決策を求めています。のようなテーマを追加すると、Axesに影響し、プロットされた画像全体に対して点の位置もシフトします。+ theme_void() 更新:軸のフォントサイズは、プロットの幅と高さに応じて変化し、プロットパネルの相対サイズに影響することに気付きました。そのため、プロット幅とプロット高さを定義せずにnpc単位で位置を指定するのは簡単ではありません。可能な場合は、geom_pointsの位置をプロット幅とプロット高さの関数として指定します。
10 r  ggplot2  grob 

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