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

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

4
リスト内のリストが同等であるかどうかを確認するより速い方法はありますか?
ここでは1:7、4つの異なるパーティション、つまり{1}、{2,3,4}、{5,6}、および{7}の整数があり、それらのパーティションはリストに書き込まれlist(1,c(2,3,4),c(5,6),7)ます。1つのパーティション内の要素の異なる順列が同じものとして認識されるように、パーティションをセットとして扱います。たとえば、list(1,c(2,3,4),c(5,6),7)とlist(7,1,c(2,3,4),c(6,5))同等です。 この問題はセット全体の排他的パーティションについて説明しているため、リスト内の要素(noなど)の繰り返しはありませんlist(c(1,2),c(2,1),c(1,2))。 以下のように、いくつかの異なる順列をリストにリストしlstました lst <- list(list(1,c(2,3,4),c(5,6),7), list(c(2,3,4),1,7,c(5,6)), list(1,c(2,3,4),7,c(6,5)), list(7,1,c(3,2,4),c(5,6))) そして、私がしたいことは、すべての順列が同等であることを確認することです。はいの場合、結果を取得しTRUEます。 私はこれまでやったことは、各パーティション内の要素をソートし、かつ使用することであるsetdiff()とinterset()し、union()それを判断する(下の私のコードを参照してください) s <- Map(function(v) Map(sort,v),lst) equivalent <- length(setdiff(Reduce(union,s),Reduce(intersect,s),))==0 ただし、パーティションサイズが大きくなると、この方法は遅くなると思います。それを作るためのより速いアプローチはありますか?事前に感謝! 一部のテストケース(小さいサイズのデータ​​) # should return `TRUE` lst1 <- list(list(1,c(2,3,4),c(5,6)), list(c(2,3,4),1,c(5,6)), list(1,c(2,3,4),c(6,5))) # should return `TRUE` lst2 <- list(list(1:2, 3:4), list(3:4, 1:2)) # should return `FALSE` lst3 <- list(list(1,c(2,3,4),c(5,6)), list(c(2,3,4),1,c(5,6)), list(1,c(2,3,5),c(6,4)))

1
deparse()のより高速な代替手段
への繰り返しの呼び出しに依存するパッケージを維持していますdeparse(control = c("keepNA", "keepInteger"))。control常に同じであり、表現は異なります。deparse()で同じオプションセットを繰り返し解釈するのに多くの時間を費やしているよう.deparseOpts()です。 microbenchmark::microbenchmark( a = deparse(identity, control = c("keepNA", "keepInteger")), b = .deparseOpts(c("keepNA", "keepInteger")) ) # Unit: microseconds # expr min lq mean median uq max neval # a 7.2 7.4 8.020 7.5 7.6 55.1 100 # b 3.0 3.2 3.387 3.4 3.5 6.0 100 一部のシステムでは、冗長な.deparseOpts()呼び出しが実際にdeparse()(ここでのフレームグラフ)のランタイムの大部分を占めています。 私は本当に.deparseOpts()一度だけ呼び出してからdeparse()に数値コードを提供したいのですが、.Internal()Cコードを直接呼び出したり呼び出したりしないとそれは不可能に見えます。どちらもパッケージ開発の観点からは最適ではありません。 deparse …
9 r 

3
data.tableでできるdtplyrでできないこと
Rで、特にとの間dplyrでデータをラングリングするための学習努力を投資する必要がdtplyrありdata.tableますか? dplyrほとんど使用しますが、データが大きすぎる場合はを使用しますがdata.table、これはまれなケースです。したがって、dtplyrv1.0がのインターフェイスとしてdata.table公開されたので、一見すると、data.tableインターフェイスの使用について二度と心配する必要はないようです。 だから、ほとんどの便利な機能や側面何をしているdata.tableことはできません使用して行われdtplyrた瞬間に、それはそうで行われることはありませんかdtplyr? その顔、上dplyrの利点とdata.tableなり、それはのように聞こえるdtplyr追い越すだろうdplyr。使用する理由はあるのでしょうdplyr一度dtplyr完全に成熟していますか? 注:私はdplyrvs については質問していませんdata.table(data.table vs dplyrの場合のように、他の人がうまくやることができるか、うまくいかないことがあるのでしょうか?) tはdtplyr、使用するツールとなります。
9 r  dplyr  data.table  dtplyr 

5
前のn行に基づいて条件付きで新しい列を作成する
次のようにデータフレームを設定しました。 df <- data.frame("id" = c(111,111,111,222,222,222,222,333,333,333,333), "Location" = c("A","B","A","A","C","B","A","B","A","A","A"), "Encounter" = c(1,2,3,1,2,3,4,1,2,3,4)) id Location Encounter 1 111 A 1 2 111 B 2 3 111 A 3 4 222 A 1 5 222 C 2 6 222 B 3 7 222 A 4 8 333 B 1 9 333 A …

2
R:コードロジックをUI / htmlタグからエレガントに分離する方法は?
問題 動的なUI要素を作成する場合(shiny.tag、shiny.tag.list、...)、私はしばしばそれが困難な私のコードのロジックから分離し、通常、入れ子になったの複雑な混乱で終わるを見つけるtags$div(...)ループや条件文と混合し、。見るのが面倒で見苦しい一方で、たとえばhtml-templatesに変更を加える場合など、エラーが発生しやすくなります。 再現可能な例 次のデータ構造があるとします。 my_data <- list( container_a = list( color = "orange", height = 100, content = list( vec_a = c(type = "p", value = "impeach"), vec_b = c(type = "h1", value = "orange") ) ), container_b = list( color = "yellow", height = 50, content = list( vec_a …

1
ggplotグラフの個々のバーに画像を挿入する方法
さまざまな統計でさまざまなNBAルーキーを比較しようとしています。r/ dataisbeautifulグラフのように、グラフの最後にプレーヤーの顔を追加できれば、グラフが見栄えが良いと思いました。私のコードは現在これです: a3 %>% ggplot(aes(x = reorder(Player, PPM), y = PPM)) + geom_bar(stat = "identity", aes(fill = Player)) + geom_text(aes(label = PPM), size = 3, position = position_dodge(width = 1), hjust = -0.1) + coord_flip() + theme_minimal() + xlab("Player") + ylab("Points Per Minute") + theme(legend.position = "none") これは私のグラフが現在どのように見えるかです
9 r  image  ggplot2 

3
Rで文字列の文字を効率的に並べ替える方法
ベクター内の各文字列の文字を効率的に並べ替えるにはどうすればよいですか?たとえば、文字列のベクトルが与えられた場合: set.seed(1) strings <- c(do.call(paste0, replicate(4, sample(LETTERS, 10000, TRUE), FALSE)), do.call(paste0, replicate(3, sample(LETTERS, 10000, TRUE), FALSE)), do.call(paste0, replicate(2, sample(LETTERS, 10000, TRUE), FALSE))) 各文字列をベクトルに分割し、ベクトルを並べ替えて、出力を折りたたむ関数を作成しました。 sort_cat <- function(strings){ tmp <- strsplit(strings, split="") tmp <- lapply(tmp, sort) tmp <- lapply(tmp, paste0, collapse = "") tmp <- unlist(tmp) return(tmp) } sorted_strings <- sort_cat(strings) ただし、これを適用する必要がある文字列のベクトルは非常に長く、この関数は遅すぎます。パフォーマンスを改善する方法について何か提案はありますか?

4
時間を重複させて行を削除する効率的な方法
開始時刻と終了時刻を表す列を持つ長いデータセットがあり、行が重複していて優先順位が高い場合(たとえば、1が最高の優先順位)、行を削除したいと思います。私のサンプルデータは library(tidyverse) library(lubridate) times_df <- tibble(start = as_datetime(c("2019-10-05 14:05:25", "2019-10-05 17:30:20", "2019-10-05 17:37:00", "2019-10-06 04:43:55", "2019-10-06 04:53:45")), stop = as_datetime(c("2019-10-05 14:19:20", "2019-10-05 17:45:15", "2019-10-05 17:50:45", "2019-10-06 04:59:00", "2019-10-06 05:07:10")), priority = c(5,3,4,3,4)) 私が思いついた方法は、より高い優先度の値との重複を見つけ、それを使用しanti_joinてそれらを元のデータフレームから削除することにより、問題を後方から攻撃します。同じ時間点で3つの期間が重複している場合、このコードは機能しません。これを行うには、より効率的で機能的な方法があるはずです。 dropOverlaps <- function(df) { drops <- df %>% filter(stop > lead(start) | lag(stop) > start) %>% mutate(group …
9 r  dplyr 

1
画像の上に長方形を描くR光沢
この質問に対する受け入れられた回答について詳しく説明したいます。 以下の最小限の光沢のあるアプリ(承認された回答から抽出)を次の機能で改善することを検討しています。 1)長方形とテキストラベルを描画します。ラベルはR(input$foo)、たとえばドロップダウンから取得されます。ラベルが画像の外側にあるエッジケースを回避するには、ラベルを長方形の内側に配置する必要があります。 2)別の色を使用するラベルに応じて、長方形とそのラベルにを 3)ユーザーが長方形内をダブルクリックして削除する機能。複数の一致(オーバーラップ、ネスト)の場合、最小面積の長方形を削除する必要があります。 1)のブラウニーポイント:ドロップダウンは、次のようにカーソルの横に表示されます(ここにコードを記述)。可能であれば、ドロップダウンリストはserver.Rから渡す必要があり、固定/ハードコーディングしないでください。その理由は、ユーザー入力によっては、別のドロップダウンが表示される可能性があるためです。たとえば、果物用c('banana','pineapple','grapefruit')に1つのドロップダウン、動物用に1つのドロップダウンc('raccoon','dog','cat')などがあります。 # JS and CSS modified from: https://stackoverflow.com/a/17409472/8099834 css <- " #canvas { width:2000px; height:2000px; border: 10px solid transparent; } .rectangle { border: 5px solid #FFFF00; position: absolute; } " js <- "function initDraw(canvas) { var mouse = { x: 0, y: 0, startX: 0, …

2
Rcppおよびint64 NA値
64ビットのベクトルでNA値をRcppからRに渡すにはどうすればよいですか? 私の最初のアプローチは: // [[Rcpp::export]] Rcpp::NumericVector foo() { Rcpp::NumericVector res(2); int64_t val = 1234567890123456789; std::memcpy(&(res[0]), &(val), sizeof(double)); res[1] = NA_REAL; res.attr("class") = "integer64"; return res; } しかし、それは #> foo() integer64 [1] 1234567890123456789 9218868437227407266 取得する必要があります #> foo() integer64 [1] 1234567890123456789 <NA>
8 r  rcpp  na  bit64 

2
2列をチェーンしてR data.tableの行順序を設定する
2列のチェーンに基づいてRデータテーブルを注文する方法を理解しようとしています。 これが私のサンプルのdata.tableです。 dt <- data.table(id = c('A', 'A', 'A', 'A', 'A') , col1 = c(7521, 0, 7915, 5222, 5703) , col2 = c(7907, 5703, 8004, 7521, 5222)) id col1 col2 1: A 7521 7907 2: A 0 5703 3: A 7915 8004 4: A 5222 7521 5: A 5703 5222 …
8 r  data.table 

3
Rの線密度ヒートマップ
問題の説明 プロットしたい数千行(約4000)があります。ただし、すべての線を使用してプロットすることは不可能でありgeom_line()、たとえばalpha=0.1、線の密度が高い場所とない場所を示すためだけに使用することはできません。私はPythonで似たようなものに出くわしました。特に、回答の2番目のプロットは本当に良さそうですが、似たようなものをで達成できるかどうかはわかりませんggplot2。したがって、このようなもの: サンプルデータセット パターンを示すセットを使用してこれを示す方がはるかに理にかなっていますが、ここではランダムな正弦曲線を生成しました。 set.seed(1) gen.dat <- function(key) { c <- sample(seq(0.1,1, by = 0.1), 1) time <- seq(c*pi,length.out=100) val <- sin(time) time = 1:100 data.frame(time,val,key) } dat <- lapply(seq(1,10000), gen.dat) %>% bind_rows() ここで答えたようなヒートマップ を試してみましたが、このヒートマップは、完全な軸上の点の接続(直線など)を考慮せず、時間ごとの「ヒート」を示します。 質問最初の図に示されているのと同様のラインのヒートマップを 使用して、Rでどのようにできggplot2ますか?
8 r  ggplot2  plot  heatmap 

1
Rでの関数のスコープと評価
次の関数を考える f <- function(x) { g <- function(y) { y + z } z <- 4 x + g(x) } Rで次のコードを実行すると、答えはなぜ10になりますか?yがこの質問にどのように対応するかについて少し混乱しています。 z <- 10 f(3)
8 r  scoping 

1
Rに2つの軸を持つ凡例をプロットする方法はありますか?
2つの軸を持つ凡例をプロットしたいと思います。具体的には、分類された2つの空間オブジェクトを組み合わせました。1つはイベントの強度を示し、2つ目はその場所でのイベントの確率を示します。結合されたラスターのピクセルが各カテゴリに分類される場所を示す凡例を作成します。作成する凡例は次のようになります 。2つの軸を持つ凡例。 分類されたデータの通常の凡例は次のようになります:元の凡例 これは私が使用しているデータのタイプの再現可能な例です: library(raster) library(rasterVis) # setseed set.seed(999) # create raster (example of what would be the outcome of combining intensity and probability rasters) plot.me<- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40) val <- c(100:104, 200:204, 300:304, 400:404) plot.me<- setValues(plot.me, sample(val,ncell(plot.me),replace=T)) ###### Plotting plot.me <- ratify(plot.me) levelplot(plot.me,att="ID" , col.regions=c("#beffff","#73dfff","#d0ff73","#55ff00", "#73b2ff","#0070ff","#70a800","#267300", …

5
Rで互いに最も近い2つの3つの値から選択する方法は?
のID最も近い2つの値をそれぞれ選択しますCq。私はそれを理解したと思ったが、それは行の位置に依存する... これが私のデータセットの形式の例です: df <- data.frame(ID = c("A","A","A","B","B","B","C","C","C"), Cq = c(34.32,34.40,34.31,31.49,31.40,31.49,31.22,31.31,31.08)) ID Cq 1 A 34.32 2 A 34.40 3 A 34.31 4 B 31.49 5 B 31.40 6 B 31.49 7 C 31.22 8 C 31.31 9 C 31.08 そして私が試したもの df4 <-df %>% group_by(ID) %>% arrange(Cq) %>% mutate(diffvals= Cq - …
8 r  dplyr 

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