2017-07-06 31 views
-2

この操作では、xtbl_dfであり、outliersdata.frameです。 ただし、idlogicalで、tbl_dfではありません。%%はアトミック結果を返しません

私は間違っていますか?

x <- as_tibble(c(rep(2,10),50,64,80)) 
boxplot1 <- 
    ggplot (data=x, aes_string (x = factor(0), y = "x")) + 
    geom_boxplot (fill = "lightgreen", outlier.fill = "darkgreen") + 
    stat_boxplot(geom ='errorbar', color = "grey") + 
    coord_flip() + 
    ggtitle (paste0 ("x", ", with outliers")) 
outliers <- data.frame (unlist (ggplot_build(boxplot1)$data[[1]][6],use.names = F),stringsAsFactors=FALSE) 
id <- x %in% outliers 
+1

何もありません。 '%in%'関数は、ドキュメントに記載されているように、論理ベクトルを返します。 –

+0

私は 'x'と同じ長さの' tbl_df'を期待しました。実際、 'id < - match(outliers、x)'は長さ 'outliers'の数値を返しますが、' id < - match(x、outliers) 'は長さ' x'の数値を返しません。 –

+0

サンプルデータを入力してください。私はあなたの問題を 'mtcars'データで再現しようとしました.1つは単一の列で、もう1つはその列のサブセットを持つdata.frameです。 '%in%'は常に1つの論理値を返しました。これは理にかなっています。 'x'と' outliers'の両方は長さ1のリストです。したがって、各行の値が他の行にあるかどうかを確認するのではなく、列全体が正確に一致しているかどうかをチェックします。 –

答えて

0

溶液はbrakets id <- x[[1]] %in% outliers[[1]]idを入れましたが、私は理由を理解していません。

+0

'x'と' outliers'の両方はtibblesです。これはリストであるdata.framesです。彼らの "リストフォーム"は列のリストです。 「x%in%outliers」とは、「xの各要素について、それは「異常値」にあるのか? 'x '(リストとして)は要素(列)を1つしか持たないので、' x%in outliers' answersは 'x'の列も' outliers'の列ですか? –

+0

ありがとう!私はあなたの言う事が分かります。 a)最初の括弧はtibblesの列の内容にダウングレードします: "xの要素リストもまた" outliers "の要素リストですか? b)第2のブラケットは、選択された要素リストの特定のリスト内容(ダブルベクトル)にダウングレードします: "チブル列xのリストの最初の要素に含まれるベクトルの要素も同じです'outliers's tibbleからのリストの最初の要素の二重ベクトルへの同じ位置? この例題は、私がtidyverseについて考えたことは、より概念的です。原子操作を解決する別の形式ですか? –

+0

この例に従えば、私は 'm2 < - mean(x [!id、] [[1]]、na.rm = T)'で簡単なフィルタリングされた平均を取得する必要があります。 –

関連する問題