简体   繁体   中英

Wrong output from S4 object in for loop

Using a for loop for getting class-specific outputs from a S4 object. The S4 object is called data and is a large object.

for loop consits of 5 classes namely: 'fat' 'inflammation' 'muscle' 'glands' 'lumen'

tissues = c("fat","inflammation","muscle","glands","lumen")
tissues
for (i in tissues) {
    print(i)
    print(data$i)
}

Output:

'fat' 'inflammation' 'muscle' 'glands' 'lumen' 

[1] "fat"
$`m424_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 169 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m424_inflammation_tic-normalization
    raster dimensions: 507 x 164 x 1
    coord(3): x = 1..507, y = 1..164, z = 1..1
    mass range:  599.9313 to 3200.0906 
    centroided: FALSE 

$`m80_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 149 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m80_inflammation_tic-normalization
    raster dimensions: 400 x 212 x 1
    coord(3): x = 1..400, y = 1..212, z = 1..1
    mass range:  599.6025 to 3200.7207 
    centroided: FALSE 

[1] "inflammation"
$`m424_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 169 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m424_inflammation_tic-normalization
    raster dimensions: 507 x 164 x 1
    coord(3): x = 1..507, y = 1..164, z = 1..1
    mass range:  599.9313 to 3200.0906 
    centroided: FALSE 

$`m80_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 149 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m80_inflammation_tic-normalization
    raster dimensions: 400 x 212 x 1
    coord(3): x = 1..400, y = 1..212, z = 1..1
    mass range:  599.6025 to 3200.7207 
    centroided: FALSE 

[1] "muscle"
$`m424_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 169 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m424_inflammation_tic-normalization
    raster dimensions: 507 x 164 x 1
    coord(3): x = 1..507, y = 1..164, z = 1..1
    mass range:  599.9313 to 3200.0906 
    centroided: FALSE 

$`m80_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 149 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m80_inflammation_tic-normalization
    raster dimensions: 400 x 212 x 1
    coord(3): x = 1..400, y = 1..212, z = 1..1
    mass range:  599.6025 to 3200.7207 
    centroided: FALSE 

[1] "glands"
$`m424_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 169 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m424_inflammation_tic-normalization
    raster dimensions: 507 x 164 x 1
    coord(3): x = 1..507, y = 1..164, z = 1..1
    mass range:  599.9313 to 3200.0906 
    centroided: FALSE 

$`m80_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 149 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m80_inflammation_tic-normalization
    raster dimensions: 400 x 212 x 1
    coord(3): x = 1..400, y = 1..212, z = 1..1
    mass range:  599.6025 to 3200.7207 
    centroided: FALSE 

[1] "lumen"
$`m424_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 169 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m424_inflammation_tic-normalization
    raster dimensions: 507 x 164 x 1
    coord(3): x = 1..507, y = 1..164, z = 1..1
    mass range:  599.9313 to 3200.0906 
    centroided: FALSE 

$`m80_inflammation_tic-normalization`
An object of class 'MSContinuousImagingExperiment'
  <53400 feature, 149 pixel> imaging dataset
    imageData(1): intensity
    featureData(0):
    pixelData(0):
    metadata(11): ibd binary type universally unique identifier ...
        files name
    run(1): m80_inflammation_tic-normalization
    raster dimensions: 400 x 212 x 1
    coord(3): x = 1..400, y = 1..212, z = 1..1
    mass range:  599.6025 to 3200.7207 
    centroided: FALSE 


The code should output data$fat followed by data$inflammation, data$muscle, data$glands, data$lumen.

However it only outputs data$inflammation

data$i is the problem. Use data[[i]] instead. data$i searches for the element of the list which is called "i", since there is no such element it autocompletes data$i to data$inflammation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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