基于R中的数据帧创建列表
我有以下格式的数据帧a基于R中的数据帧创建列表,r,list,R,List,我有以下格式的数据帧a user item 10000000 1 # each user is a 8 digits integer, item is up to 5 digits integer 10000000 2 10000000 3 10000001 1 10000001 4 .............. 我想要的是一个列表B,用户的名字作为列表元素的名字,列表元素是对应于这个用户的项目的向量 e、 g 我还需要将名称粘
user item
10000000 1 # each user is a 8 digits integer, item is up to 5 digits integer
10000000 2
10000000 3
10000001 1
10000001 4
..............
我想要的是一个列表B,用户的名字作为列表元素的名字,列表元素是对应于这个用户的项目的向量
e、 g
我还需要将名称粘贴到B。要应用关联规则学习,需要将项目转换为字符
最初我使用了tapply(一个$user,一个$item,c)
,这使得它与关联规则包不兼容。见我的帖子:
但是@sgibb的解决方案似乎也生成了一个数组,而不是一个列表
library("arules")
temp <- as(C, "transactions") # C is output using @sgibb's solution
throws error: Error in as(C, "transactions") :
no method or default for coercing “array” to “transactions”
library(“arules”)
温度查看一下tapply
:
df <- read.table(textConnection("
user item
10000000 1
10000000 2
10000000 3
10000001 1
10000001 4"), header=TRUE)
B <- tapply(df$item, df$user, FUN=as.character)
B
# $`10000000`
# [1] "1" "2" "3"
#
# $`10000001`
# [1] "1" "4"
请看一下tapply
:
df <- read.table(textConnection("
user item
10000000 1
10000000 2
10000000 3
10000001 1
10000001 4"), header=TRUE)
B <- tapply(df$item, df$user, FUN=as.character)
B
# $`10000000`
# [1] "1" "2" "3"
#
# $`10000001`
# [1] "1" "4"
请看一下tapply
:
df <- read.table(textConnection("
user item
10000000 1
10000000 2
10000000 3
10000001 1
10000001 4"), header=TRUE)
B <- tapply(df$item, df$user, FUN=as.character)
B
# $`10000000`
# [1] "1" "2" "3"
#
# $`10000001`
# [1] "1" "4"
请看一下tapply
:
df <- read.table(textConnection("
user item
10000000 1
10000000 2
10000000 3
10000001 1
10000001 4"), header=TRUE)
B <- tapply(df$item, df$user, FUN=as.character)
B
# $`10000000`
# [1] "1" "2" "3"
#
# $`10000001`
# [1] "1" "4"
请使用dput
共享您的数据,它使帮助变得更容易。?dlply
或?tapply
另外,在您前面的问题中,您提到了拆分
。参见split(一个$item,一个$user)
@Jintapply
和split
的输出是相同的。唯一的区别是class(tapply(…)=“array”
和class(split(…)=“list”)
。也许可以尝试类似lappy(split(一个$item,一个$user),unique)的方法。但是,是否应该有重复的项目?如果没有,也许你在构建a
时在某个地方计算错误了?我之所以这样说,是因为split
和tapply
都与可能的值复制无关。请使用dput
共享您的数据,它使帮助变得更容易。?dlply
或?tapply
另外,在您前面的问题中,您提到了拆分
。参见split(一个$item,一个$user)
@Jintapply
和split
的输出是相同的。唯一的区别是class(tapply(…)=“array”
和class(split(…)=“list”)
。也许可以尝试类似lappy(split(一个$item,一个$user),unique)的方法。但是,是否应该有重复的项目?如果没有,也许你在构建a
时在某个地方计算错误了?我之所以这样说,是因为split
和tapply
都与可能的值复制无关。请使用dput
共享您的数据,它使帮助变得更容易。?dlply
或?tapply
另外,在您前面的问题中,您提到了拆分
。参见split(一个$item,一个$user)
@Jintapply
和split
的输出是相同的。唯一的区别是class(tapply(…)=“array”
和class(split(…)=“list”)
。也许可以尝试类似lappy(split(一个$item,一个$user),unique)的方法。但是,是否应该有重复的项目?如果没有,也许你在构建a
时在某个地方计算错误了?我之所以这样说,是因为split
和tapply
都与可能的值复制无关。请使用dput
共享您的数据,它使帮助变得更容易。?dlply
或?tapply
另外,在您前面的问题中,您提到了拆分
。参见split(一个$item,一个$user)
@Jintapply
和split
的输出是相同的。唯一的区别是class(tapply(…)=“array”
和class(split(…)=“list”)
。也许可以尝试类似lappy(split(一个$item,一个$user),unique)的方法。但是,是否应该有重复的项目?如果没有,也许你在构建a
时在某个地方计算错误了?我之所以这样说,是因为split
和tapply
都与可能的值复制无关。您的解决方案提供的是数组,而不是列表。假设您的输出为B,brand_table@Jin:您应该从一开始就提到arules软件包、您的目标以及与上一个问题的链接。请参阅我的编辑。是否在as命令中未使用B?为什么在这里使用拆分(df$item,df$user)?@Jin因为这是一个简短的示例。你可以用B我明白你的意思。但如果我们首先尝试收集属于同一用户的所有项目,您是否正确使用了关联规则?我们可以直接拆分?您的解决方案提供的是数组,而不是列表。假设您的输出为B,brand_table@Jin:您应该从一开始就提到arules软件包、您的目标以及与上一个问题的链接。请参阅我的编辑。是否在as命令中未使用B?为什么在这里使用拆分(df$item,df$user)?@Jin因为这是一个简短的示例。你可以用B我明白你的意思。但如果我们首先尝试收集属于同一用户的所有项目,您是否正确使用了关联规则?我们可以直接拆分?您的解决方案提供的是数组,而不是列表。假设您的输出为B,brand_table@Jin:您应该从一开始就提到arules软件包、您的目标以及与上一个问题的链接。请参阅我的编辑。是否在as命令中未使用B?为什么在这里使用拆分(df$item,df$user)?@Jin因为这是一个简短的示例。你可以用B我明白你的意思。但如果我们首先尝试收集属于同一用户的所有项目,您是否正确使用了关联规则?我们可以直接拆分?您的解决方案提供的是数组,而不是列表。假设您的输出为B,brand_table@Jin:您应该从一开始就提到arules软件包、您的目标以及与上一个问题的链接。请参阅我的编辑。是否在as命令中未使用B?为什么在这里使用拆分(df$item,df$user)?@Jin因为这是一个简短的示例。你可以用B我明白你的意思。但如果我们首先尝试收集属于同一用户的所有项目,您是否正确使用了关联规则?我们可以直接分开吗?