基于R中的数据帧创建列表

基于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 我还需要将名称粘

我有以下格式的数据帧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

我还需要将名称粘贴到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)
@Jin
tapply
split
的输出是相同的。唯一的区别是
class(tapply(…)=“array”
class(split(…)=“list”)
。也许可以尝试类似
lappy(split(一个$item,一个$user),unique)的方法。但是,是否应该有重复的项目?如果没有,也许你在构建
a
时在某个地方计算错误了?我之所以这样说,是因为
split
tapply
都与可能的值复制无关。请使用
dput
共享您的数据,它使帮助变得更容易。
?dlply
?tapply
另外,在您前面的问题中,您提到了
拆分
。参见
split(一个$item,一个$user)
@Jin
tapply
split
的输出是相同的。唯一的区别是
class(tapply(…)=“array”
class(split(…)=“list”)
。也许可以尝试类似
lappy(split(一个$item,一个$user),unique)的方法。但是,是否应该有重复的项目?如果没有,也许你在构建
a
时在某个地方计算错误了?我之所以这样说,是因为
split
tapply
都与可能的值复制无关。请使用
dput
共享您的数据,它使帮助变得更容易。
?dlply
?tapply
另外,在您前面的问题中,您提到了
拆分
。参见
split(一个$item,一个$user)
@Jin
tapply
split
的输出是相同的。唯一的区别是
class(tapply(…)=“array”
class(split(…)=“list”)
。也许可以尝试类似
lappy(split(一个$item,一个$user),unique)的方法。但是,是否应该有重复的项目?如果没有,也许你在构建
a
时在某个地方计算错误了?我之所以这样说,是因为
split
tapply
都与可能的值复制无关。请使用
dput
共享您的数据,它使帮助变得更容易。
?dlply
?tapply
另外,在您前面的问题中,您提到了
拆分
。参见
split(一个$item,一个$user)
@Jin
tapply
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我明白你的意思。但如果我们首先尝试收集属于同一用户的所有项目,您是否正确使用了关联规则?我们可以直接分开吗?