为什么我的函数返回一个奇怪的数据框

时间:2015-10-11 00:44:28

标签: r for-loop dataframe

我写了一个函数来回报每年有多少次鸟击。罢工的年份和次数都是正确的,但我数据框的第一列有什么问题?为什么最后一排打击NA NA?

flightDates <- mdy_hm(birds[,10])
flightYears <- as.factor(year(flightDates))
years <- (c(2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011))
strikesPerYear <- function(x){
strikes <- c(NA, NA)
for(i in years){  
    countStrikes <- length(which(x == i))
    strikes <- data.frame(rbind(cbind("Year"=i, "NumStrikes"=as.numeric(countStrikes)), strikes))
}
return(strikes)
}

strikesPerYear(flightYears)

> strikesPerYear(flightYears)
        Year NumStrikes
1       2011      10483
110     2010      10923
19      2009      10741
18      2008       8903
17      2007       8746
16      2006       8010
15      2005       7804
14      2004       7667
13      2003       6664
12      2002       6769
11      2001       6287
        2000       6407
strikes   NA         NA

2 个答案:

答案 0 :(得分:0)

第一列是输出rownames的{​​{1}}。看起来您有data.frame作为输入(matrix编号为:1,2,3,4,5,)并且不知何故您将rownames转换为字符,或者在从rownames转换为matrix后,他们将其更改为字符,并且您的输出随机排列data.frame

最后一行可能是rownamesNA因为你的作品中有一行

NA

答案 1 :(得分:0)

我将strikes&lt; - c(NA,NA)改为strikes&lt; - data.frame(),这给了我正在寻找的数据帧输出。

flightDates <- mdy_hm(birds[,10])
flightYears <- as.factor(year(flightDates))
years <- (c(2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011))
strikesPerYear <- function(x){
strikes <- data.frame()
for(i in years){  
countStrikes <- length(which(x == i))
strikes <- data.frame(rbind(cbind("Year"=i, "NumStrikes"=as.numeric    (countStrikes)), strikes))
}
return(strikes)
}

strikesPerYear(flightYears)