如何在列表上绘制和应用函数

时间:2016-05-23 07:35:44

标签: r

我正在尝试绘制图并优化方法的参数。

这里我加载了一个我使用的包和一个相关的数据

然后我创建一个20行但未知列的空矩阵,因为我知道我的行少于20行

output<-matrix(,20,)

这里我想在$ intenstity上应用estimateBaseline函数,使用不同的迭代次数,我不知道该怎么做

iteration <- c(100, 200, 300, 400, 500) 

for (i in 1:length(fiedler2009subset)){
output[,i] <- estimateBaseline(fiedler2009subset[i], method="SNIP",iterations=100)
}

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

output<-list()
for (i in 1:length(fiedler2009subset)){
  output[[i]] <- estimateBaseline(fiedler2009subset[[i]], method="SNIP", iterations=100)
  }

output现在是一个列表。通过lapply,您可以通过每个元素loop

lapply(output, head, 2)
[[1]]
         mass intensity
[1,] 1000.015      3149
[2,] 1000.117      3134

[[2]]
         mass intensity
[1,] 1000.015   3709.00
[2,] 1000.117   3701.75

[[3]]
         mass intensity
[1,] 1000.015      3834
[2,] 1000.117      3789

将其另存为matrix / data.frame:

df <- do.call(cbind, output)

编辑:

发表评论后,你可以这样做:

output<-list()
for (i in 1:length(fiedler2009subset)){
  tmp <- do.call(cbind, lapply(iteration, function(x) estimateBaseline(fiedler2009subset[[i]], method="SNIP", iterations= x)))
  # clean up 
  rownames(tmp) <- tmp[, 1]
  tmp <- tmp[, -seq(1, length(iteration)*2, by=2)]
  colnames(tmp) <- paste0(colnames(tmp), "_", iteration)
  output[[i]] <- tmp
  }