【发布时间】:2017-11-02 01:48:24
【问题描述】:
我正在尝试创建一个循环并在列中搜索一个值,然后显示该值所在的所有第一行,我希望它从 1950 年到 2016 年
Em=
year x y
1950 5 3
1950 4 3
1950 2 4
1950 1 5
1951 6 7
1951 5 6
1951 1 4
1951 0 3
我一直在尝试这个:
for (p in 1:nrow(Em)){
if (Em[p,"year"]==1950)
break
print(Em[p,])} #it is not showing me just the first row that matches
{ else if (Em[p,"year"]==1951)
break
print(Em[p,])}
获得
year x y
1950 5 3
1951 6 7
【问题讨论】:
-
在 if 条件下缺少
{ -
在循环中错过了另一个
} -
看来你可能只想要
library(dplyr); Em %>% filter(year %in% 1950:1951) -
@RobJensen
filter返回年份 == 1950 或 1951 的所有行。OP 想要与 1950 和 1951 匹配的 first 行 -
@LaMachineInfernale,这将返回 year == 1950 或 1951 的所有记录。OP 想要与每年匹配的 first 记录。
标签: r for-loop if-statement