関数for
を使用するのを忘れたために失敗しましたget
library(MALDIquant) # You should write what package is used
`Names <- c('a', 'b','c')` # this a vector of names
for(i in Names){
assign(i, createMassPeaks(mass=get(i)[, 1], intensity=get(i)[, 2]))
}
このループは機能するはずです。テストしてみましょう
set.seed(001)
a <- data.frame(V1=rnorm(50, 1000, 50), V2=rnorm(50, 1000, 50))
b <- data.frame(V1=rnorm(50, 1000, 50), V2=rnorm(50, 1000, 50))
c <- data.frame(V1=rnorm(50, 1000, 50), V2=rnorm(50, 1000, 50))
結果は次のようになります。
> a
S4 class type : MassPeaks
Number of m/z values : 50
Range of m/z values : 889.265 - 1079.764
Range of intensity values: 9.098e+02 - 1.12e+03
> b
S4 class type : MassPeaks
Number of m/z values : 50
Range of m/z values : 904.282 - 1104.358
Range of intensity values: 9.256e+02 - 1.115e+03
> c
S4 class type : MassPeaks
Number of m/z values : 50
Range of m/z values : 855.554 - 1124.883
Range of intensity values: 8.798e+02 - 1.132e+03
このfor
ループはうまく機能しますが、@ David Robinsonの答えは最高のものです。もう1つ言いたいのですが、関数は次のようになるはずです。
as.MassPeaks <- function(x) {
return(createMassPeaks(mass=x[, 1],
intensity=x[, 2],
metaData=x))}
mass=x[, 1]
動作しますがmass=mass(x[, 1])
動作しません。 と についても同じinstensity
ですmetaData
。次に、David Robinson のアプローチを使用すると、次のようになります。
lapply(list(a,b,c), as.MassPeaks)
[[1]]
S4 class type : MassPeaks
Number of m/z values : 50
Range of m/z values : 889.265 - 1079.764
Range of intensity values: 9.098e+02 - 1.12e+03
[[2]]
S4 class type : MassPeaks
Number of m/z values : 50
Range of m/z values : 904.282 - 1104.358
Range of intensity values: 9.256e+02 - 1.115e+03
[[3]]
S4 class type : MassPeaks
Number of m/z values : 50
Range of m/z values : 855.554 - 1124.883
Range of intensity values: 8.798e+02 - 1.132e+03