我的玩具數據框:lapply當兩個列表元素的名稱是函數的參數
d <- data.frame(
value = sample(1:10),
class = sample(c("a","b"), 20, replace = TRUE)
)
我拆我的數據由「類」的價值框架並把它們放在一個列表,其中每個列表元素被命名爲在它的課後:
l <- dlply(d, .(class), function(x)return(x))
然後,我想在每個班上都做一個直方圖。請注意,我不想要一個方面。我希望將多個單獨的文件保存爲類。所以我定義一個函數doPlots,使直方圖,然後ggsaves它們(如a_hist.png和b_hist.png,在這個例子中):
doPlots <- function(d, name){
g <- ggplot(data = d, aes(x=value)) +
geom_histogram(binwidth=1)
ggsave(filename=paste(name,"hist.png",sep="_"))
}
然而,當我lapply:
lapply(l, FUN=doPlots, name=names(l))
我得到錯誤:device
必須爲NULL,字符串或函數。
在此先感謝。
嘗試'lapply(l,function(x)doPlots(x,names(x)))''。你的'names(l)'是列表'l'名稱的整個向量,而不是每次迭代所需的名稱。 –
這是有道理的(謝謝!)但我仍然得到相同的錯誤:( – VaguelySteamy