R 为什么我的函数返回一个奇怪的数据帧
我写了一个函数来返回每年的鸟击次数。年份和罢工次数是正确的,但我的数据框的第一列有什么问题?为什么最后一排打不到R 为什么我的函数返回一个奇怪的数据帧,r,for-loop,dataframe,R,For Loop,Dataframe,我写了一个函数来返回每年的鸟击次数。年份和罢工次数是正确的,但我的数据框的第一列有什么问题?为什么最后一排打不到 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 <-
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
flightDates第一列是输出data.frame
的行名。看起来您有一个矩阵
作为输入(它的行名
编号为:1,2,3,4,5,)并且您以某种方式将行名
转换为字符,或者在从矩阵
到数据.frame
的转换过程中,他们将其类更改为字符,并且您的输出具有随机排列的行名
最后一行可能是NA
,NA
,因为您的功能中有一行
strikes <- c(NA, NA)
strikesI change strikes您所说的第一列实际上是result data.frame的row.name,它们显示原始flightYears data.frame的行号。最后一列是strikes NA NA
,因为您使用rbind
将其行绑定(追加)到strikes data.frame。但是如何修复它?我从数据集中提取日期,然后将年份保留为“flightYears”,我将这些信息添加到问题中,为了告诉你如何修复它,你需要告诉我们这到底意味着什么。您没有准确描述您希望输出的内容。我得到错误:找不到函数“mdy\u hm”
,您的问题无法重现
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)