如何使用 igraph 提取特定节点的邻居?

How to extract Neighbors of specific nodes using igraph?

我有患有他们疾病的人类边缘列表的 .csv 文件。

Person   Diseases   Age    gender  location    
    Person1 Asthma  25  Female  Location1   
    Person2 Pneumonia   35  Male    Location2   
    Person3 Typhoid 40  Male    Location3   
    Person4 TB  36  Male    Location4   
    Person5 Asthma  25  Female  Location5   
    Person6 Pneumonia   50  Male    Location21  
    Person7 Typhoid 24  Female  Location22  
    Person8 TB  30  Female  Location23  
    Person9 Pneumonia   40  Male    Location24  
    Person10    Pneumonia   30  Male    Location25  
    Person11    Pneumonia   45  Female  Location26  
    Person12    Pneumonia   25  Male    Location3   
    Person13    Pneumonia   45  Male    Location4   
    Person14    Pneumonia   30  Male    Location5   
    Person15    Pneumonia   65  Male    Location15  
    Person16    Pneumonia   40  Female  Location16  
    Person17    TB  55  Male    Location17  
    Person18    TB  21  Male    Location18  
    Person19    TB  35  Female  Location11  
    Person20    TB  32  Male    Location12  
    Person21    TB  42  Male    Location13  
    Person22    TB  55  Female  Location14  
    Person23    TB  41  Male    Location21  
    Person24    TB  22  Female  Location22  
    Person25    Typhoid 31  Female  Location23  
    Person26    Typhoid 25  Female  Location24  
    Person27    Typhoid 67  Male    Location25  
    Person28    Typhoid 20  Female  Location26  
    Person29    Typhoid 36  Male    Location19  
    Person30    Typhoid 65  Female  Location20  
    Person31    Asthma  33  Female  Location6   
    Person32    Asthma  21  Male    Location7   
    Person33    Asthma  20  Female  Location8   
    Person34    Asthma  55  Male    Location9   
    Person35    Asthma  40  Female  Location10  
    Person36    Asthma  47  Male    Location11  
    Person37    Asthma  35  Male    Location12  
    Person38    Typhoid 30  Male    Location13  
    Person39    Typhoid 39  Female  Location23  
    Person40    Typhoid 21  Male    Location24  
    Person41    Asthma  40  Female  Location25  
    Person42    Asthma  19  Male    Location26  
    Person43    Asthma  29  Male    Location1   
    Person44    TB  49  Female  Location2   
    Person45    TB  24  Female  Location3   
    Person46    TB  68  Female  Location4   
    Person47    Typhoid 38  Female  Location5   
    Person48    Typhoid 59  Female  Location6   
    Person49    Typhoid 64  Male    Location7   
    Person50    Typhoid 31  Female  Location8   
    Person51    Typhoid 64  Female  Location20  
    Person52    Typhoid 32  Female  Location21  
    Person53    Asthma  30  Male    Location22  
    Person54    Asthma  36  Female  Location23  
    Person55    Asthma  40  Female  Location24  
    Person56    TB  20  Female  Location25  
    Person57    TB  26  Female  Location26  
    Person58    TB  42  Female  Location1   
    Person59    Typhoid 24  Female  Location2   
    Person60    Typhoid 48  Female  Location3   
    Person61    Typhoid 62  Male    Location4   
    Person62    Typhoid 42  Female  Location5   
    Person63    Typhoid 27  Female  Location6   
    Person64    Typhoid 36  Female  Location7   
    Person65    Asthma  67  Male    Location8   
    Person66    Asthma  23  Male    Location9   
    Person67    TB  21  Male    Location10  
    Person68    TB  45  Female  Location11  
    Person1 Arthritis   25  Female  Location1   
    Person2 heart attack    35  Male    Location2   
    Person3 diabetes    40  Female  Location3   
    Person4 heart attack    36  Male    Location4   
    Person5 Arthritis   25  Male    Location5   
    Person6 heart attack    50  Female  Location21  
    Person7 heart attack    24  Male    Location22  
    Person8 diabetes    30  Female  Location23  
    Person9 heart attack    40  Male    Location24  
    Person10    Arthritis   30  Male    Location25  
    Person11    heart attack    45  Female  Location26  
    Person12    Arthritis   25  Male    Location3   
    Person13    heart attack    45  Male    Location4   
    Person14    diabetes    30  Female  Location5   
    Person15    heart attack    65  Female  Location15  
    Person16    Arthritis   40  Female  Location16  
    Person17    heart attack    55  Female  Location17  
    Person18    heart attack    21  Female  Location18  
    Person19    Arthritis   35  Male    Location11  
    Person20    heart attack    32  Female  Location12  
    Person21    heart attack    42  Male    Location13  
    Person22    diabetes    55  Female  Location14  
    Person23    Arthritis   41  Female  Location21  
    Person24    heart attack    22  Female  Location22  
    Person25    diabetes    31  Female  Location23  
    Person26    heart attack    25  Female  Location24  
    Person27    Arthritis   67  Female  Location25  
    Person28    heart attack    20  Male    Location26  
    Person29    heart attack    36  Female  Location19  
    Person30    Arthritis   65  Female  Location20  
    Person31    heart attack    25  Female  Location6   
    Person32    heart attack    24  Male    Location7 

我试过这行代码来绘制人类及其疾病的二分网络,我已经通过这段代码 "location" 显示了人的属性

V(g)$location <-  d_el$location
V(g)$color=V(g)$location    
V(g)$Person<- d_el$Person

现在我想提取TB节点的所有邻居节点我已经使用了这行代码

V(g)$location[which(V(g)$Person %in% neighbors(g, "TB"))] 
 [1] 20 22 14 16 17 20  8 15 16 17 18 19 11 13 24 25 20 21 20 22 14

上面的输出显示了什么?

这应该可行(您的位置是因数,因此显示为整数,请将其转换为字符):

V(g)$location <-  as.character(d_el$location)
V(g)$Person <- as.character(d_el$Person)
V(g)$location[which(V(g)$Person %in% names(neighbors(g, "TB")))] 
# [1] "Location4"  "Location23" "Location17" "Location18" "Location11" "Location12" "Location13" "Location14" "Location21" "Location22" "Location2"  "Location3"  "Location4"  "Location25"
# [15] "Location26" "Location1"  "Location10" "Location11" "Location4"