在列表的每个元素的多个列上应用命令

  • 本文关键字:命令 应用 元素 列表 r
  • 更新时间 :
  • 英文 :


我有一个列表,其中16个元素都具有相同的变量(31列)。现在我想对这些变量做一些改变,并希望我可以对列表的每个元素做这些改变。简化后的列表如下所示

>list
>$`M2_2004` 
>       A      B      C 
>1      2      1      3 
>2      4      6      5 
>3      6      4      0 
... 
>$`M2_2005` 
>      A       B      C 
>70    5       9      1 
>71    4       6      5 
>72    2       5      8 
... 

例如,现在我想为列表的每个元素的B和C列添加两个前导数。它使用以下命令

sprintf("%04d", B)

,其中B是列。由于我对R很陌生,所以我会用一行单独的代码将此应用于每个元素的每列,但我希望通过在单个命令中执行此操作来加快此过程。

您可以使用lapply将相同的函数应用于列表的每个元素,sapply将相同的函数应用于相同数据帧的多个列:

lapply(your_list, function(x){
x[c("B", "C")] <- sapply(x[c("B", "C")], function(y) sprintf("%04d", y))
})

最新更新