[英]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.