如何将Rpply中的结果转换为R中的矩阵?

时间:2016-12-23 11:32:13

标签: r function matrix lapply

我想在R中使用lapply。

此外,我的功能如下所示:

func_countries <- function(x){
      Country <- x
      Nrow <- nrow(data[which(data$country == x),])
      Res <- list(Country, Nrow)
      return(Res)}

Overview_countries <- unlist(lapply(countries_list, func_countries))

如何将lapply的结果显示在矩阵中,我可以将其用于进一步的计算?我尝试了以下但是没有用,因为数字不是数字加上我不能使用例如&#39; $&#39;选择列。

Overview_countries <- matrix(Overview_countries, nrow=2, dimnames=list(c('Country', 'Numb_obs')))
Overview_countries <- t(Overview_countries)

1 个答案:

答案 0 :(得分:1)

你的方法不一定是最好的方法;正如@akrun所说,数据框似乎比矩阵更合适,像dplyrdata.table这样的包可以更优雅地执行这些聚合。

但是要回答你的问题:你可以使用byrow参数来获得你(可能)想要的东西。

我创建了一个小向量a,它应该类似于您使用的unlist(lapply(的输出。

a <- list(list('Belgium',25), list('Holland', 89), list('UK', 784))
a <- unlist(a)

res <- matrix(a, nrow=3, byrow=TRUE, dimnames=list(NULL, c('Country', 'Numb_obs')))

输出:

     Country   Numb_obs
[1,] "Belgium" "25" 
[2,] "Holland" "89" 
[3,] "UK"      "784"