2

我正在尝试使用函数读取 .txt 文件read.transactions。这是我的文件的结构:

1121,1141,1212,1311,1343,2111,2171,2213,2215,2311,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
1111,1112,1126,1145,1146,1181,1213,1441,2122,2322,3311,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
1172,2131,2173,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
1141,1223,1416,2322,2323,112701,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

我正在使用这行代码来执行此操作:

tr <- read.transactions("disco.txt", format = "basket", sep=',',rm.duplicates= TRUE)

但我得到的是这样的(inspect(head(tr))):

1 {,      
   1121,  
   1141,  
   1212,  
   1311,  
   1343,  
   2111,  
   2171,  
   2213,  
   2215,  
   2311}  
2 {,      
   1111,  
   1112,  
   1126,  
   1145,  
   1146,  
   1181,  
   1213,  
   1441,  
   2122,  
   2322,  
   3311} 
.
.
.

我的问题是:如何从这些交易中删除“空”项目集?这个想法是稍后应用先验算法以获得有吸引力的规则。你知道那个算法是否可以apriori处理R这个问题?我已经将先验算法应用于我刚刚向您展示的事务,但其中许多在包含空项集方面是无用的。

提前谢谢了!问候!

4

1 回答 1

3

我认为尾随逗号是这里的问题。这就是为什么我认为如果你只修剪最后的“,”并使用read.transactions()

它不是特别优雅,但可以完成工作:

library("arules")

temp <- readLines("stack.dat")
for (i in 1:length(temp))
  temp[i] <- gsub(",*$", "", temp[i])
writeLines(temp, "stack_mod.dat")

tr <- read.transactions("stack_mod.dat", format = "basket", sep=',', rm.duplicates=TRUE)

这个可以吗?

于 2012-04-22T14:45:01.147 回答