Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:使用for循环的子集数据_R_Loops_For Loop_Subset - Fatal编程技术网

R:使用for循环的子集数据

R:使用for循环的子集数据,r,loops,for-loop,subset,R,Loops,For Loop,Subset,我有一个包含邻域的大型数据集,但我只想要这些邻域的一个子集,其中我有一个字符向量。 我考虑过使用for循环对其进行子集设置,请参见下面的数据示例和代码示例。看起来我的for循环实际上是在所有邻域上循环的——然而,在我的新数据集中,只有一个邻域出现,而不是所有邻域的子集。有人能告诉我我在密码里做错了什么吗 我被这些答案所启发: 最好的。谢谢 示例数据 大数据集: > head(CBS, n=5) # A tibble: 5 x 37 `Wijken

我有一个包含邻域的大型数据集,但我只想要这些邻域的一个子集,其中我有一个字符向量。 我考虑过使用for循环对其进行子集设置,请参见下面的数据示例和代码示例。看起来我的for循环实际上是在所有邻域上循环的——然而,在我的新数据集中,只有一个邻域出现,而不是所有邻域的子集。有人能告诉我我在密码里做错了什么吗

我被这些答案所启发:

最好的。谢谢

示例数据

大数据集:

> head(CBS, n=5)
# A tibble: 5 x 37
                  `Wijken en buurten` `Aantal inwoners` `||Mannen` `||Vrouwen`
                                <chr>             <dbl>      <dbl>       <dbl>
1                             Alkmaar            108373      53659       54714
2                                Zuid             14315       6785        7525
3                            Kooimeer              2040        930        1105
4   Dillenburg en Stadhouderskwartier              1310        605         700
5 Staatsliedenkwartier en Landstraten              2130       1015        1110
这些对应于CBS的“Wijken en Buurten”列中的变量名

这些是我尝试过的循环:(有些循环我知道它不起作用,但我绝望了…)

for(i in 1:nrow(buurten_2)){
如果(CBS$`Wijken en buurten`[i]==buurten_2[i])
数据否!

这不是R中的工作方式;)您希望使用矢量化代码,因为它更简洁、更快(在R中)。以下是两种解决方案:

df = subset(CBS, `Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"))

df = CBS[CBS$`Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"),]

为什么要使用循环?为什么不使用CBS[CBS$`Wijken en buurten`%in%buurten_2,]
?@davidernburg我使用了一个循环,因为我认为我需要一个循环。显然我不需要,因为这是可行的!你能解释一下%的作用吗?它基本上检查CBS$`Wijken en buurten`中的每个值,如果它能与
buurten\u 2
中的任何值匹配,并返回一个布尔向量。一般来说,你很少会这样做需要借助R.Aha中的循环…我仍在发展我的编码技能,这证明了这一点!感谢您的解释!:)@DavidArenburg@DavidArenburg您将问题标记为重复问题,这是否常见,以便我现在删除我的问题?
for (i in 1:nrow(buurten_2)){
  if (CBS$`Wijken en buurten`[i] == buurten_2[i])
    data <- append(data, CBS[i,])
  print(buurten_2[i])
}

for (i in 1:length(buurten_2)){
  temp <- CBS[CBS$`Wijken en buurten`==buurten_2[i],]
  print(buurten_2[i])
}

for (i in 1:length(buurten_2)){
  data <- subset(CBS, CBS$`Wijken en buurten` == buurten_2[i])
  print(buurten_2[i])
}

for (buurten in 1:nrow(buurten_2)){
  CBS %>% 
    filter(CBS$`Wijken en buurten`[i] == buurten_2[buurten])
}
# A tibble: 1 x 37
  `Wijken en buurten` `Aantal inwoners` `||Mannen` `||Vrouwen` `|||Ongehuwd` `||Gehuwd`
                <chr>             <dbl>      <dbl>       <dbl>         <dbl>      <dbl>
1      Oudorp-Centrum              1930        935         995           730        940
df = subset(CBS, `Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"))

df = CBS[CBS$`Wijken en buurten` %in% c("Oud-Overdie", "Overdie-West", "Overdie-Oost", "Oosterhout", "De Hoef III en IV"),]