繁体   English   中英

通过 r 中的嵌套列表进行操作

[英]operate through nested lists in r

根据以下代码,我有一个嵌套列表:

cat <- c("A","A","B","B")
prod <- c("prod1","prod2","prod3","prod4")
families <- as.data.frame(cat, prod)
categories <- with(families,split(as.character(prod), cat))
sales <- list()
for(a in prod){
  sales[[a]] <- runif(4)
}
sales <-  lapply(categories, function(x) sales[x])

我希望获得每种产品在其类别中的销售额比例。

proportion_product1 <- sum(sales$A$prod1)/(sum(sales$A$prod1)+sum(sales$A$prod2))

用一个函数试试这个方法:

#Function
myfun <- function(x)
{
  #Values
  y <- lapply(x,sum)
  z <- do.call(sum,y)
  #Compute
  a <- lapply(y,function(x) x/z)
  return(a)
}
#Apply
lapply(sales,myfun)

输出:

$A
$A$prod1
[1] 0.6444069

$A$prod2
[1] 0.3555931


$B
$B$prod3
[1] 0.4644624

$B$prod4
[1] 0.5355376

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM