r语言 - arules::read.transactions() 的错误:"'cols' does not match entries in header of file"即使它们确实匹配



我有一个像这样的文本文件:

transactionID item
T100 l1,l2,l3
T200 l2,l4
T300 l2,l3
T400 l1,l2,l3
T500 l1,l3
T600 l2,l3
T700 l1,l3
T800 l1,l2,l3,l5
T900 l1,l2,l3

我想把它作为规则的事务文件来读。我使用了以下语句:

transacciones <- read.transactions(file = "/home/norhther/Escritorio/trans.txt",
format = "single",
sep = ",",
header = TRUE,
cols = c("transactionID", "item"),
rm.duplicates = TRUE)

但是,我得到以下错误:

Error in read.transactions(file = "/home/norhther/Escritorio/trans.txt", : 
'cols' does not match entries in header of file.

编辑

您应该将格式更改为basket,并使用sep = " "cols = 1的分隔符,如下所示:

text = 'transactionID item
T100 l1,l2,l3
T200 l2,l4
T300 l2,l3
T400 l1,l2,l3
T500 l1,l3
T600 l2,l3
T700 l1,l3
T800 l1,l2,l3,l5
T900 l1,l2,l3'
write(text, file = "trans.txt")
library(arules)
transacciones <- read.transactions(file = "~/Downloads/trans.txt",
format = "basket",
sep = " ",
skip = 1,
cols = c(1),
rm.duplicates = TRUE)
inspect(transacciones)
#>     items         transactionID
#> [1] {l1,l2,l3}    T100         
#> [2] {l2,l4}       T200         
#> [3] {l2,l3}       T300         
#> [4] {l1,l2,l3}    T400         
#> [5] {l1,l3}       T500         
#> [6] {l2,l3}       T600         
#> [7] {l1,l3}       T700         
#> [8] {l1,l2,l3,l5} T800         
#> [9] {l1,l2,l3}    T900

创建于2022-11-20与reprex v2.0.2


根据函数read.transactions的文档,您可以使用参数cols:

对于单一格式,cols是长度的数字或字符向量给出列(字段)的编号或名称分别为事务id和项目id。如果字符,第一行文件被假定为带有列名的头文件。为了篮子格式,cols可以是给出列编号的数字标量(字段)与事务id。如果cols = NULL,则数据不存在包含事务id。

所以你可以指定你的列的数字向量,如c(1,2)。下面是一个可复制的例子:

text = 'transactionID item
T100 l1,l2,l3
T200 l2,l4
T300 l2,l3
T400 l1,l2,l3
T500 l1,l3
T600 l2,l3
T700 l1,l3
T800 l1,l2,l3,l5
T900 l1,l2,l3'
cat(text)
#> transactionID item
#> T100 l1,l2,l3
#> T200 l2,l4
#> T300 l2,l3
#> T400 l1,l2,l3
#> T500 l1,l3
#> T600 l2,l3
#> T700 l1,l3
#> T800 l1,l2,l3,l5
#> T900 l1,l2,l3
write(text, file = "trans.txt")
library(arules)
transacciones <- read.transactions(file = "~/Downloads/trans.txt", # Change to your own directory
format = "single",
sep = ",",
header = TRUE,
cols = c(1, 2),
rm.duplicates = TRUE)
inspect(transacciones)
#>     items transactionID
#> [1] {l2}  T100 l1      
#> [2] {l4}  T200 l2      
#> [3] {l3}  T300 l2      
#> [4] {l2}  T400 l1      
#> [5] {l3}  T500 l1      
#> [6] {l3}  T600 l2      
#> [7] {l3}  T700 l1      
#> [8] {l2}  T800 l1      
#> [9] {l2}  T900 l1

创建于2022-11-19与reprex v2.0.2

相关内容

  • 没有找到相关文章

最新更新