1. ホーム
  2. r

[解決済み] as.double(y) のエラー : 型 'S4' を型 'double' のベクトルに強制することができません。

2022-02-28 02:36:13

質問

アプリオールアルゴリズムを適用しているのですが、プロット中にエラーが発生します。

パッケージをインストールしました arulesarulesviz .

このデータには3つの属性があります。2つの属性は因数分解され、1つの属性は因数分解されませんでした。その属性を個別に取り出して、因子関数を適用しています。そのコードは以下の通りです。

New_Train_Wifi = read.xlsx("D:/Train_Test.xls",1)

str(New_Train_Wifi)
'data.frame':   2201 obs. of  3 variables:
 $ Wifi_ID: Factor w/ 4 levels "1st","2nd","3rd",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ Store  : Factor w/ 5 levels "Book_Store","Clothing",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ Mac_ID : num  125 125 125 125 125 125 125 125 125 125 ...

A <- as.factor(Test_ARM_ABC$Wifi_ID)
C <- as.factor(New_Train_Wifi$Mac_ID)
New_Train_Wifi$MacID <- NULL
New_Train_Wifi$MacID <- C
New_Train_Wifi$Mac_ID <- NULL

class(New_Train_Wifi)
[1] "data.frame"
[1] "Wifi_ID" "Store"   "MacID" 
str(New_Train_Wifi)
'data.frame':   2201 obs. of  3 variables:
 $ Wifi_ID: Factor w/ 4 levels "1st","2nd","3rd",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ Store  : Factor w/ 5 levels "Book_Store","Clothing",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ MacID  : Factor w/ 6 levels "100","125","254",..: 2 2 2 2 2 2 2 2 2 2 ...

rules <- apriori(New_Train_Wifi)
inspect(rules)
rules <- apriori(New_Train_Wifi, parameter = list(minlen = 2, supp = 0.10, conf = 0.8), 
                 appearance = list(rhs = c("Wifi_ID=1st", "Wifi_ID=2nd", "Wifi_ID=3rd", 
                 "Wifi_ID=4th"), default="lhs"), control = list(verbose = F))

> inspect(rules.sorted)

#/*Now wen I give below statement in r console */
> plot(rules)

<ブロッククオート
Error in as.double(y) : 
 cannot coerce type 'S4' to vector of type 'double'

上記の文は、私が試したが解決できなかったエラーです。もし誰かがそれを解決することができれば、私は本当に感謝します。

参考にしたサイト http://www.rdatamining.com/examples/association-rules

解決方法は?

この問題は、ライブラリのインストールが不完全であることが原因です(arulesVizのパックに間違った名前(バージョン)を入れてしまったのかもしれません)。

ダウンロードは https://cran.rstudio.com/bin/windows/contrib/3.3/seriation_1.2-1.zip を手動で実行し、quot; r-studioメニュー -> ツール -> パッケージのインストール... サイトからダウンロードした上記のzipファイルをインストールします。

次に、以下をやり直してください。 install.packages("arulesViz") とlibrary(arulesViz)を指定すると、動作するようになります。 完了です。