Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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给我NA值?_R_Na - Fatal编程技术网

当数据帧中有数据时,为什么R给我NA值?

当数据帧中有数据时,为什么R给我NA值?,r,na,R,Na,我有一个包含多个列和行的数据框,但为了简化并让问题得到解答,我创建了一个包含0的虚拟数据框,但错误是相同的。我看不到这个问题,因为我以前做过这个过程,从未出错 dummy <- data.frame(matrix(0, ncol=1, nrow=140253)) dummy$Date <- as.Date.POSIXct(seq(ISOdate(1800,1,1), by = "days", length.out = nrow(dummy))) dummy$d

我有一个包含多个列和行的数据框,但为了简化并让问题得到解答,我创建了一个包含0的虚拟数据框,但错误是相同的。我看不到这个问题,因为我以前做过这个过程,从未出错

dummy <- data.frame(matrix(0, ncol=1, nrow=140253))

dummy$Date <- as.Date.POSIXct(seq(ISOdate(1800,1,1),  by = "days", length.out = nrow(dummy)))
dummy$day <- as.numeric(format(dummy$Date, '%d'))
dummy$month <- as.numeric(format(dummy$Date, '%m'))
dummy$year <- as.numeric(format(dummy$Date, '%Y'))

unique.years <- unique(dummy$year)

for(i.year in 1:length(unique.years)){
  
  year.data <- dummy[dummy$year == unique.years[i.year],]
  if(isLeapYear(year.data$year[i.year])==FALSE){
    lpy <- c(0,0,29,2,unique.years[i.year])
    lyear.data <- insertRow(as.matrix(year.data), 60, lpy)
  }else{
    lyear.data <- dummy[dummy$year == unique.years[i.year],]
  }
}
然后我意识到这是因为它没有读取所有年份的数据帧,我只运行了第一部分并打印了以下内容,给出了2164年的NA列表:

for(i.year in 1:length(unique.years)){
  
  year.data <- dummy[dummy$year == unique.years[i.year],]
  print((year.data$year[i.year]))
}
+   print((year.data$year[i.year]))}
[1] 1800
[1] 1801
[1] 1802
[1] 1803
[1] 1804
[1] 1805
[1] 1806
[1] 1807
[1] 1808
[1] 1809
[1] 1810
[1] 1811
[1] 1812
[1] 1813
[1] 1814
[1] 1815
[1] 1816
[1] 1817
[1] 1818
[1] 1819
[1] 1820
[1] 1821
[1] 1822
[1] 1823
[1] 1824
[1] 1825
[1] 1826
[1] 1827
[1] 1828
[1] 1829
[1] 1830
[1] 1831
[1] 1832
[1] 1833
[1] 1834
[1] 1835
[1] 1836
[1] 1837
[1] 1838
[1] 1839
[1] 1840
[1] 1841
[1] 1842
[1] 1843
[1] 1844
[1] 1845
[1] 1846
[1] 1847
[1] 1848
[1] 1849
[1] 1850
[1] 1851
[1] 1852
[1] 1853
[1] 1854
[1] 1855
[1] 1856
[1] 1857
[1] 1858
[1] 1859
[1] 1860
[1] 1861
[1] 1862
[1] 1863
[1] 1864
[1] 1865
[1] 1866
[1] 1867
[1] 1868
[1] 1869
[1] 1870
[1] 1871
[1] 1872
[1] 1873
[1] 1874
[1] 1875
[1] 1876
[1] 1877
[1] 1878
[1] 1879
[1] 1880
[1] 1881
[1] 1882
[1] 1883
[1] 1884
[1] 1885
[1] 1886
[1] 1887
[1] 1888
[1] 1889
[1] 1890
[1] 1891
[1] 1892
[1] 1893
[1] 1894
[1] 1895
[1] 1896
[1] 1897
[1] 1898
[1] 1899
[1] 1900
[1] 1901
[1] 1902
[1] 1903
[1] 1904
[1] 1905
[1] 1906
[1] 1907
[1] 1908
[1] 1909
[1] 1910
[1] 1911
[1] 1912
[1] 1913
[1] 1914
[1] 1915
[1] 1916
[1] 1917
[1] 1918
[1] 1919
[1] 1920
[1] 1921
[1] 1922
[1] 1923
[1] 1924
[1] 1925
[1] 1926
[1] 1927
[1] 1928
[1] 1929
[1] 1930
[1] 1931
[1] 1932
[1] 1933
[1] 1934
[1] 1935
[1] 1936
[1] 1937
[1] 1938
[1] 1939
[1] 1940
[1] 1941
[1] 1942
[1] 1943
[1] 1944
[1] 1945
[1] 1946
[1] 1947
[1] 1948
[1] 1949
[1] 1950
[1] 1951
[1] 1952
[1] 1953
[1] 1954
[1] 1955
[1] 1956
[1] 1957
[1] 1958
[1] 1959
[1] 1960
[1] 1961
[1] 1962
[1] 1963
[1] 1964
[1] 1965
[1] 1966
[1] 1967
[1] 1968
[1] 1969
[1] 1970
[1] 1971
[1] 1972
[1] 1973
[1] 1974
[1] 1975
[1] 1976
[1] 1977
[1] 1978
[1] 1979
[1] 1980
[1] 1981
[1] 1982
[1] 1983
[1] 1984
[1] 1985
[1] 1986
[1] 1987
[1] 1988
[1] 1989
[1] 1990
[1] 1991
[1] 1992
[1] 1993
[1] 1994
[1] 1995
[1] 1996
[1] 1997
[1] 1998
[1] 1999
[1] 2000
[1] 2001
[1] 2002
[1] 2003
[1] 2004
[1] 2005
[1] 2006
[1] 2007
[1] 2008
[1] 2009
[1] 2010
[1] 2011
[1] 2012
[1] 2013
[1] 2014
[1] 2015
[1] 2016
[1] 2017
[1] 2018
[1] 2019
[1] 2020
[1] 2021
[1] 2022
[1] 2023
[1] 2024
[1] 2025
[1] 2026
[1] 2027
[1] 2028
[1] 2029
[1] 2030
[1] 2031
[1] 2032
[1] 2033
[1] 2034
[1] 2035
[1] 2036
[1] 2037
[1] 2038
[1] 2039
[1] 2040
[1] 2041
[1] 2042
[1] 2043
[1] 2044
[1] 2045
[1] 2046
[1] 2047
[1] 2048
[1] 2049
[1] 2050
[1] 2051
[1] 2052
[1] 2053
[1] 2054
[1] 2055
[1] 2056
[1] 2057
[1] 2058
[1] 2059
[1] 2060
[1] 2061
[1] 2062
[1] 2063
[1] 2064
[1] 2065
[1] 2066
[1] 2067
[1] 2068
[1] 2069
[1] 2070
[1] 2071
[1] 2072
[1] 2073
[1] 2074
[1] 2075
[1] 2076
[1] 2077
[1] 2078
[1] 2079
[1] 2080
[1] 2081
[1] 2082
[1] 2083
[1] 2084
[1] 2085
[1] 2086
[1] 2087
[1] 2088
[1] 2089
[1] 2090
[1] 2091
[1] 2092
[1] 2093
[1] 2094
[1] 2095
[1] 2096
[1] 2097
[1] 2098
[1] 2099
[1] 2100
[1] 2101
[1] 2102
[1] 2103
[1] 2104
[1] 2105
[1] 2106
[1] 2107
[1] 2108
[1] 2109
[1] 2110
[1] 2111
[1] 2112
[1] 2113
[1] 2114
[1] 2115
[1] 2116
[1] 2117
[1] 2118
[1] 2119
[1] 2120
[1] 2121
[1] 2122
[1] 2123
[1] 2124
[1] 2125
[1] 2126
[1] 2127
[1] 2128
[1] 2129
[1] 2130
[1] 2131
[1] 2132
[1] 2133
[1] 2134
[1] 2135
[1] 2136
[1] 2137
[1] 2138
[1] 2139
[1] 2140
[1] 2141
[1] 2142
[1] 2143
[1] 2144
[1] 2145
[1] 2146
[1] 2147
[1] 2148
[1] 2149
[1] 2150
[1] 2151
[1] 2152
[1] 2153
[1] 2154
[1] 2155
[1] 2156
[1] 2157
[1] 2158
[1] 2159
[1] 2160
[1] 2161
[1] 2162
[1] 2163
[1] 2164
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
[1] NA
for(一年中的一年:长度(唯一年)){

year.data它在2164年之后停止,因为2165年是第366年。这是因为您正在使用
year.data
i.year
第四个索引,但每个
year.data
都有365行,因此当您到达
i.year==366
时,您就出界了,将返回
NA

我猜您只是想检查当前年份是否为闰年?好吧,所有行在
年份中都将具有相同的
年份值。data
df所以只需将if语句更改为

if (!isLeapYear(unique.years[i.year]))

这应该可以解决问题。还要注意,如果您将If语句更改为我的建议,并得到相同的错误,那么
!condition
condition==FALSE

@dpht05更可取。但无论如何,您为什么要这样做?闰日已经在原始数据集中。因为这只是一个虚拟示例,真实数据的结构会有所不同吗?对不起,它确实修复了它。非常感谢您的回复!!
if (!isLeapYear(unique.years[i.year]))