R 将转移矩阵转化为列表列表

R 将转移矩阵转化为列表列表,r,list,plyr,R,List,Plyr,我想先把一个向量转换成一个转换矩阵(我管理的)。作为第二步,我想将生成的函数应用于不同受访者执行不同任务的数据集。 因此,我想得到一个嵌套在响应者和任务上的列表 以下是一个示例数据帧: Data <- data.frame( respondent = c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2), task = c(1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2), acquisition

我想先把一个向量转换成一个转换矩阵(我管理的)。作为第二步,我想将生成的函数应用于不同受访者执行不同任务的数据集。 因此,我想得到一个嵌套在响应者和任务上的列表

以下是一个示例数据帧:

  Data <- data.frame(
    respondent = c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2),
    task = c(1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2),
    acquisition = sample(1:5, replace = TRUE)
    )
然而,我想要的是:

$respondent
[1]$task[1]
result

$respondent
[1]$task[2]
result 

...
我和dlply玩过,但没能让它发挥作用。。。
任何建议,谢谢

dlply
自然会给你一个列表(而不是列表列表)。标准的称呼方式是

(ans_as_list <- dlply(
  Data, 
  .(respondent, task), 
  summarise, 
  res = gettrans(acquisition)
))

出于兴趣,您为什么需要列表?在大多数情况下,一个单一的列表会更容易处理。我在dlply中缺少了摘要语句。。。谢谢你!我不知道如何在ANSU as_列表中总结任务或选择特定的受访者(假设有更多)。所以我认为列表列表会起到作用……如果答案有用,你可以点击左边的向上箭头进行向上投票。(您可以这样做,也可以将答案标记为正确。)
$respondent
[1]$task[1]
result

$respondent
[1]$task[2]
result 

...
(ans_as_list <- dlply(
  Data, 
  .(respondent, task), 
  summarise, 
  res = gettrans(acquisition)
))
(ans_as_list_of_lists <- llply(levels(factor(Data$respondent)), function(lvl)
{
  ans_as_list[grepl(paste("^", lvl, sep = ""), names(ans_as_list))]
}))