项目欧拉#19在R

时间:2016-01-03 09:59:58

标签: r

我需要帮助理解为什么我对Euler项目的问题19得到了错误的答案。 问题是: 您将获得以下信息,但您可能更愿意为自己做一些研究。

  

1900年1月1日是星期一。   九月三十天,   四月,六月和十一月。   其余的都有三十一个,   仅拯救二月,   其中有二十八,风雨无阻。   在闰年,二十九岁。   闰年发生在任何一年,可被4整除,但除非可被400整除,否则不会在一个世纪上。   在二十世纪的第一个月(1901年1月1日至2000年12月31日),有多少个星期日下降?

#rm(list=ls())
days=seq(from=as.Date("1900/1/1"), to=as.Date("2000/12/31"), by="month")
firstSundays=days[weekdays(as.Date(days))=="Sunday"&months(as.Date(days))=="January"]
length(firstSundays)

它给我的答案是14,当我第一次看到它时,它给了我:

[1] "1905-01-01" "1911-01-01" "1922-01-01" "1928-01-01" "1933-01-01"
[6] "1939-01-01" "1950-01-01" "1956-01-01" "1961-01-01" "1967-01-01"
[11] "1978-01-01" "1984-01-01" "1989-01-01" "1995-01-01"

我不明白这里发生了什么。有人可以解释一下吗?我对R很新,我不确定我做错了什么。

1 个答案:

答案 0 :(得分:5)

要在R中计算它,您可以执行以下操作:

firsts_of_months <- seq(as.Date("1901-01-01"), as.Date("2000-12-01"), by = "1 month")
sum(weekdays(firsts_of_months) == "Sonntag") # use == "sunday" or your local language