简体   繁体   中英

How do I subset a list based on another list? Error in .subset(x, j) : invalid subscript type 'list'

I want to subset p list based on the subsets of r list ( r0 and r1 ).

> head(p)
        JHU_113_2.CEL JHU_144.CEL JHU_173.CEL JHU_176R.CEL JHU_182.CEL
2315252       0.09655     0.04224     0.22314      0.03202     0.03889
2315253       0.64864     0.38068     0.49589      0.38359     0.93560
2315374       0.00730     0.00293     0.03034      0.02571     0.00436
2315375       0.11744     0.29977     0.21102      0.21728     0.33313
2315376       0.04079     0.01525     0.03090      0.08493     0.01303
2315377       0.01269     0.02355     0.09147      0.31425     0.13685
        JHU_186.CEL JHU_187.CEL JHU_188.CEL JHU_203.CEL JHU_205.CEL JHU_207.CEL
2315252     0.03532     0.06716     0.35315     0.69236     0.21461     0.36181
2315253     0.28369     0.39982     0.20404     0.25617     0.97292     0.48171
2315374     0.00788     0.00520     0.01704     0.03273     0.06720     0.06545
2315375     0.10076     0.32012     0.45451     0.34734     0.01755     0.32847
2315376     0.03559     0.02163     0.01586     0.04264     0.05689     0.08093
2315377     0.01356     0.00897     0.43832     0.43092     0.37055     0.08548
        JHU_210.CEL JHU_211R3.CEL JHU_214.CEL JHU_215.CEL JHU_220.CEL
2315252     0.36106       0.13470     0.49530     0.10391     0.31615
2315253     0.33458       0.64219     0.88915     0.73075     0.58742
2315374     0.00116       0.00873     0.05717     0.06269     0.03684
2315375     0.07026       0.24551     0.40584     0.31307     0.40265
2315376     0.11264       0.02603     0.19339     0.01830     0.01725
2315377     0.03770       0.08637     0.11037     0.14717     0.18223
        JHU_221.CEL JHU_222.CEL JHU_229.CEL JHU_231.CEL JHU_80.CEL JHU_88.CEL
2315252     0.07842     0.45757     0.04073     0.09254    0.06598    0.07061
2315253     0.36090     0.60542     0.99010     0.90981    0.26533    0.24361
2315374     0.02094     0.10975     0.00359     0.00764    0.03794    0.00038
2315375     0.13955     0.37944     0.15815     0.09675    0.08247    0.10321
2315376     0.00266     0.05912     0.04784     0.00909    0.08888    0.01415
2315377     0.03133     0.28770     0.03233     0.18698    0.17952    0.01129
        JHU_95.CEL JHU_016.CEL JHU_046.CEL JHU_096.CEL
2315252    0.01362     0.52139     0.11005     0.02028
2315253    0.73908     0.96300     0.57058     0.77603
2315374    0.00174     0.01604     0.00796     0.02158
2315375    0.18741     0.12899     0.19215     0.21786
2315376    0.00787     0.09430     0.00815     0.03281
2315377    0.04137     0.10129     0.03751     0.02363

> head(r)
  Class       Results
1     1 JHU_113_2.CEL
2     0   JHU_144.CEL
3     1   JHU_173.CEL
4     1  JHU_176R.CEL
5     1   JHU_182.CEL
6     0   JHU_186.CEL

> r0 <- subset(r, Class == 0)
> r1 <- subset(r, Class == 1)

> p0 <- p[,r0]

Traceback:

Error in .subset(x, j) : invalid subscript type 'list'

subset should always return a data.frame , and I don't think you can use a frame as the column index (second positional argument) of [.data.frame .

Instead, extract the $Results column to form a vector .

r0 <- subset(r,Class == 0)$Results
r0
# [1] "JHU_144.CEL" "JHU_186.CEL"
p[,r0]
#         JHU_144.CEL JHU_186.CEL
# 2315252     0.04224     0.03532
# 2315253     0.38068     0.28369
# 2315374     0.00293     0.00788
# 2315375     0.29977     0.10076
# 2315376     0.01525     0.03559
# 2315377     0.02355     0.01356

Data

p <- structure(list(JHU_113_2.CEL = c(0.09655, 0.64864, 0.0073, 0.11744, 0.04079, 0.01269), JHU_144.CEL = c(0.04224, 0.38068, 0.00293, 0.29977, 0.01525, 0.02355), JHU_173.CEL = c(0.22314, 0.49589, 0.03034, 0.21102, 0.0309, 0.09147), JHU_176R.CEL = c(0.03202, 0.38359, 0.02571, 0.21728, 0.08493, 0.31425), JHU_182.CEL = c(0.03889, 0.9356, 0.00436, 0.33313, 0.01303, 0.13685), JHU_186.CEL = c(0.03532, 0.28369, 0.00788, 0.10076, 0.03559, 0.01356), JHU_187.CEL = c(0.06716, 0.39982, 0.0052, 0.32012, 0.02163,  0.00897), JHU_188.CEL = c(0.35315, 0.20404, 0.01704, 0.45451, 0.01586, 0.43832), JHU_203.CEL = c(0.69236, 0.25617, 0.03273, 0.34734, 0.04264, 0.43092), JHU_205.CEL = c(0.21461, 0.97292, 0.0672, 0.01755, 0.05689, 0.37055), JHU_207.CEL = c(0.36181, 0.48171, 0.06545, 0.32847, 0.08093, 0.08548), JHU_210.CEL = c(0.36106, 0.33458, 0.00116, 0.07026, 0.11264, 0.0377), JHU_211R3.CEL = c(0.1347, 0.64219, 0.00873, 0.24551, 0.02603, 0.08637), JHU_214.CEL = c(0.4953, 0.88915, 0.05717, 0.40584, 0.19339, 0.11037 ), JHU_215.CEL = c(0.10391, 0.73075, 0.06269, 0.31307, 0.0183, 0.14717), JHU_220.CEL = c(0.31615, 0.58742, 0.03684, 0.40265, 0.01725, 0.18223), JHU_221.CEL = c(0.07842, 0.3609, 0.02094, 0.13955, 0.00266, 0.03133), JHU_222.CEL = c(0.45757, 0.60542, 0.10975, 0.37944, 0.05912, 0.2877), JHU_229.CEL = c(0.04073, 0.9901, 0.00359, 0.15815, 0.04784, 0.03233), JHU_231.CEL = c(0.09254, 0.90981, 0.00764, 0.09675, 0.00909, 0.18698), JHU_80.CEL = c(0.06598, 0.26533, 0.03794, 0.08247, 0.08888, 0.17952), JHU_88.CEL = c(0.07061,  0.24361, 0.00038, 0.10321, 0.01415, 0.01129), JHU_95.CEL = c(0.01362, 0.73908, 0.00174, 0.18741, 0.00787, 0.04137), JHU_016.CEL = c(0.52139, 0.963, 0.01604, 0.12899, 0.0943, 0.10129), JHU_046.CEL = c(0.11005, 0.57058, 0.00796, 0.19215, 0.00815, 0.03751), JHU_096.CEL = c(0.02028, 0.77603, 0.02158, 0.21786, 0.03281, 0.02363)), class = "data.frame", row.names = c("2315252", "2315253", "2315374", "2315375", "2315376", "2315377"))
r <- structure(list(Class = c(1L, 0L, 1L, 1L, 1L, 0L), Results = c("JHU_113_2.CEL", "JHU_144.CEL", "JHU_173.CEL", "JHU_176R.CEL", "JHU_182.CEL", "JHU_186.CEL")), class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6"))

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