web-dev-qa-db-ja.com

エラー:列のインデックス作成でサポートされていない行列または配列の使用

「comorbid_names」という名前の変数のリストがあります。そして、「併存症」に併存症がある人を選びたい。ただし、変数名がtrueの場合は、変数名を選択します。

たとえば、患者1には「chd」のみがあるため、それだけがTRUEとして表示されます。

comorbid_names [1] "chd" "heart_failure" "stroke"
[4]「高血圧」「糖尿病」「copd」
[7]「てんかん」「甲状腺機能低下症」「癌」
[10] "喘息" "ckd_stage3" "ckd_stage4"
[13] "ckd_stage5" "atrial_fibrilation" "learning_disability"
[16] "peripheral_arterial_disease" "osteoporosis"
class(comorbid_names)[1]「キャラクター」

併存疾患<-names(p [、comorbid_names] [p [、comorbid_names] == 1])

この時点で私はこのエラーを受け取ります

エラー:列のインデックス付けでのマトリックスまたは配列のサポートされていない使用

理由は完全にはわかりませんが、comorbid_namesが文字であることと関係があると思います

誰かアドバイスはありますか?

5
Rospa

単に_p[, comorbid_names] == 1_を使用すると、選択した罹患率のTRUE/FALSE値のテーブルが表示されます。患者名またはIDをそのリストに追加するには、次のようにcbindを使用します。cbind(p["patient_id"], p[, comorbid_names] == 1)ここで、「patient_id」は患者を識別する列の名前です。

これは完全に再現可能な例です:

_comorbid_names <- c("chd", "heart_failure","stroke", "hypertension",
                    "diabetes", "copd", "epilepsy", "hypothyroidism", 
                    "cancer", "asthma", "ckd_stage3", "ckd_stage4",
                    "ckd_stage5", "atrial_fibrilation", "learning_disability",
                    "peripheral_arterial_disease", "osteoporosis")

all_morbidities <- c("chd", "heart_failure","stroke", "hypertension",
                    "diabetes", "copd", "epilepsy", "hypothyroidism", 
                    "cancer", "asthma", "ckd_stage3", "ckd_stage4",
                    "ckd_stage5", "atrial_fibrilation", "learning_disability",
                    "peripheral_arterial_disease", "osteoporosis",
                    "hairyitis", "jellyitis", "transparency")

# Create dummy data frame "p" with patient ids and whether or not they suffer from each condition  
patients <- data.frame(patient_id = 1:20)
conditions <- matrix(sample(0:1, nrow(patients)*length(all_morbidities), replace=TRUE),
                     nrow(patients),
                     length(all_morbidities))
p <- cbind(patients, conditions)
names(p) <- c(names(patients), all_morbidities)

# Final step: get patient IDs and whether they suffer from specific morbidities 
comorbidities <- cbind(p["patient_id"], p[, comorbid_names] == 1)
_

少なくとも1つの罹患率に苦しんでいる患者のみを選択する場合は、次のようにします。

_comorbidities[rowSums(comorbidities[-1]) != 0]
_
0
HAVB