web-dev-qa-db-ja.com

R4DSエラー比較(1)は、アトミックタイプとリストタイプでのみ可能です

R4DSセクション3.6で、著者は次のコードを提示します。

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
  geom_point(mapping = aes(color = class)) + 
  geom_smooth(data = filter(mpg, class == "subcompact"), se = FALSE)

次のエラーが発生します

Error in class == "subcompact" : 
  comparison (1) is possible only for atomic and list types

著者が結果を示すニースのプロットを持っているので、著者がそれを書いたときにうまくいったと思います。

何が起こっているのですか、どうすれば修正できますか? (R 3.3.2 on OS X)ありがとう

12
Bill Raynor

filter()関数はdplyrパッケージに由来します。これらの行を実行する前に、必ずロードしてください。それ以外の場合は、_mpg$class_ではなく、組み込み関数であるclass()との比較を実行しています。

13
coletl

おそらく、関数(フィルター)がロードされ、dplyrフィルターをマスクした別のパッケージがあります。

迅速かつ汚い修正:

dplyr::filter()

の代わりに

filter()
8
mzakaria

ライブラリを使用する(dplyr)

library(dplyr)

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
  geom_point(mapping = aes(color = class)) +
  geom_smooth(
    data = filter(mpg, class == "subcompact"),
    se = FALSE)
1
user10730916