【问题标题】:Why is my function returning a strange data frame为什么我的函数返回一个奇怪的数据框
【发布时间】:2016-01-08 17:07:21
【问题描述】:

我写了一个函数来返回每年有多少鸟击。年份和罢工次数是正确的,但我的数据框的第一列有什么问题?为什么最后一行 Strikes 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

【问题讨论】:

  • 你所说的第一列实际上是结果data.frame的row.names,它们显示了原始flightYears data.frame的行号。最后一列是strikes NA NA,因为您使用rbind 将其行绑定(附加)到罢工数据帧。
  • 但是我该如何解决呢?我从数据集中提取日期,然后将年份保持为“flightYears”,我将该信息添加到问题中
  • 为了告诉您如何修复它,您需要告诉我们这究竟意味着什么。您还没有准确描述您希望输出的内容。
  • 我收到Error: could not find function "mdy_hm",您的问题无法重现

标签: r for-loop dataframe


【解决方案1】:

第一列是输出data.framerownames。看起来你有一个 matrix 作为输入(有 rownames 编号为:1,2,3,4,5, )并且你以某种方式将 rownames 转换为字符,或者在从 matrix 转换为data.frame 他们将它们的类更改为字符,您的输出有 rownames 随机排列。

最后一行可能是NANA,因为你的函数中有一行

strikes <- c(NA, NA)

【讨论】:

    【解决方案2】:

    我将罢工

    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)
    

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 2021-10-21
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 2023-04-02
      • 2012-06-21
      • 1970-01-01
      相关资源
      最近更新 更多