R:从列表中提取一个值并将其粘贴到数据框中

时间:2015-07-28 07:12:18

标签: r dataframe

我有一个数据框列表(list9)。

> str(list9)
List of 2
 $ :'data.frame':   64 obs. of  11 variables:
 ..$ list$Stimulus          : Factor w/ 7 levels "108.wav","42.wav",..: 1 1 1 1 1 1 1 1 2 2 ...
 ..$ list$IndicationStandard: num [1:64] 1 0 1 0 1 0 0 0 0 0 ...
 ..$ list$P42               : num [1:64] 0 0 0 0 0 0 0 0 0 0 ...
 ..$ list$P53               : num [1:64] 0 0 0 0 0 0 0 0 0 0 ...
 ..$ list$P64               : num [1:64] 0.375 0.375 0.375 0.375 0.375 0.375 0.375 0.375 0.375 0.375 ...
 ..$ list$P75               : num [1:64] 0.812 0.812 0.812 0.812 0.812 ...
 ..$ list$P86               : num [1:64] 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ...
 ..$ list$P97               : num [1:64] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
 ..$ list$P108              : num [1:64] 0.375 0.375 0.375 0.375 0.375 0.375 0.375 0.375 0.375 0.375 ...
 ..$ list$TGdispInd1        : num [1:64] 0.317 0.317 0.317 0.317 0.317 ...
 ..$ list$TGdispInd2        : num [1:64] 0.756 0.756 0.756 0.756 0.756 ...
$ :'data.frame':    64 obs. of  11 variables:
 ..$ list$Stimulus          : Factor w/ 7 levels "108.wav","42.wav",..: 1 1 1 1 1 1 1 1 2 2 ...
 ..$ list$IndicationStandard: num [1:64] 0 0 1 0 1 0 0 0 0 0 ...
 ..$ list$P42               : num [1:64] 0 0 0 0 0 0 0 0 0 0 ...
 ..$ list$P53               : num [1:64] 0 0 0 0 0 0 0 0 0 0 ...
 ..$ list$P64               : num [1:64] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
 ..$ list$P75               : num [1:64] 0.812 0.812 0.812 0.812 0.812 ...
 ..$ list$P86               : num [1:64] 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 ...
 ..$ list$P97               : num [1:64] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
 ..$ list$P108              : num [1:64] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
 ..$ list$TGdispInd1        : num [1:64] 0.351 0.351 0.351 0.351 0.351 ...
 ..$ list$TGdispInd2        : num [1:64] 0.784 0.784 0.784 0.784 0.784 ...

我创建了一个目标数据框(结果)

> str(result)
'data.frame':   2 obs. of  3 variables:
 $ TGdispInd1: num  0 0
 $ TGdispInd2: num  0 0
 $ subject   : chr  "TG_75ms_Step11_V1-998-1.txt" "TG_75ms_Step11_V1-999-1.txt"

我想将列表$ TGdispInd1的第一个值和列表中每个数据帧的$ TGdispInd2列入数据框"结果" (它也可能是列表$ TGdispInd1和列表$ TGdispInd2的平均值,因为所有64个值都相等)。

这是结果数据框的样子

> result
  TGdispInd1 TGdispInd2                     subject
1       .317       .756 TG_75ms_Step11_v1-998-1.txt
2       .351       .784 TG_75ms_Step11_v1-999-1.txt

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

尝试

result[1:2] <- do.call(rbind,lapply(list9, function(x)
                x[1, c('list$TGdispInd1',  'list$TGdispInd2']))

如果您对mean值感兴趣

result[1:2] <- do.call(rbind, lapply(list9, function(x) 
               colMeans(x[c('list$TGdispInd1',  'list$TGdispInd2'])))