首页 > 解决方案 > 循环遍历数组并将值分配给向量,给出 NULL 不正确的值

问题描述

我有一个名为“states”的向量,所有州都有 2 个字母缩写,还有一个 temp1 数据框,有 3 列“Hospital.Name”、“heart attack”和“State”

temp1   Hospital.Name                     heart attack State
99      PROVIDENCE ALASKA MEDICAL CENTER        13.4    AK
103     ALASKA REGIONAL HOSPITAL                14.5    AK
102     FAIRBANKS MEMORIAL HOSPITAL             15.5    AK

temp1 表为每个州提供更多医院

states
 [1] "AK" "AL" "AR" "AZ" "CA" "CO" "CT" "DC" "DE" "FL" "GA" "GU" "HI" "IA" "ID" "IL" "IN" "KS" "KY" "LA" "MA" "MD" "ME" "MI" "MN" "MO" "MS"
[28] "MT" "NC" "ND" "NE" "NH" "NJ" "NM" "NV" "NY" "OH" "OK" "OR" "PA" "PR" "RI" "SC" "SD" "TN" "TX" "UT" "VA" "VI" "VT" "WA" "WI" "WV" "WY

当我使用“状态”数组的第一个值自行运行此代码时,我得到了正确的结果

resulttest <- subset(temp1[1,], State ==states[1])
resulttest

   Hospital.Name                     heart attack State
99 PROVIDENCE ALASKA MEDICAL CENTER         13.4    AK

但是当我尝试在“状态”向量中的所有状态的循环上运行它时,我得到一个 NULL 值

for (i in 1:length(states)){
     resulttest <- subset(temp1[1,], State ==states[i])
     }

# > resulttest
#
# [1] Hospital.Name heart attack  State        
# <0 rows> (or 0-length row.names)

有人可以帮我使用循环功能吗?,谢谢

标签: r

解决方案


这就是我在评论的帮助下最终做的事情,它还将结果附加到一个名为“result”的新数据框中,num 是一个变量。谢谢您的帮助 :)

是一个变量

 result <- data.frame(matrix(ncol = 3, nrow = 0))
 x <- c("Hospital.Name", "heart attack", "State")
 colnames(result) <- x

   for (i in 1:length(states)){
        resulttest <- temp1[temp1$State %in% states[i],]
        result[i,] <-resulttest1[num,]

      }

推荐阅读