この操作では、x
はtbl_df
であり、outliers
はdata.frame
です。 ただし、id
はlogical
で、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
何もありません。 '%in%'関数は、ドキュメントに記載されているように、論理ベクトルを返します。 –
私は 'x'と同じ長さの' tbl_df'を期待しました。実際、 'id < - match(outliers、x)'は長さ 'outliers'の数値を返しますが、' id < - match(x、outliers) 'は長さ' x'の数値を返しません。 –
サンプルデータを入力してください。私はあなたの問題を 'mtcars'データで再現しようとしました.1つは単一の列で、もう1つはその列のサブセットを持つdata.frameです。 '%in%'は常に1つの論理値を返しました。これは理にかなっています。 'x'と' outliers'の両方は長さ1のリストです。したがって、各行の値が他の行にあるかどうかを確認するのではなく、列全体が正確に一致しているかどうかをチェックします。 –