【问题标题】:For loop in R can't retrieve the number of rows in a dataframeR中的for循环无法检索数据框中的行数
【发布时间】:2019-04-13 18:47:15
【问题描述】:

我正在尝试在 R 中使用 for 循环来获取数据帧中的行数。

year1<-c("2001","2002","2003")
countries1<-c("Canada","USA","Mexico")
color1<-c("black","red","blue")

year2<-c("2010","2011","2012")
countries2<-c("France","Germany","Japan")
color2<-c("white","yellow","green")

df1<-data.frame(year1,countries1,color1)
df2<-data.frame(year2,countries2,color2)

for (i in c(df1,df2))
{
nb<-nrow(i)
print(nb)
}

我希望得到 3 和 3(因为每个数据帧有 3 行),但我得到 6“NULL”。你能帮帮我吗?

【问题讨论】:

    标签: r loops dataframe for-loop


    【解决方案1】:

    我们可以把它放在list中,循环遍历listprint的行数

    for(dat in list(df1, df2)) {nb <- nrow(dat); print(nb)}
    #[1] 3
    #[1] 3
    

    连接 (c) 的问题是 - 它是 unclasses 和 data.frame 并将其转换为 listvector。由于 data.frame 中各有 3 列,因此它将是 listlength 6(即 6 个向量)

    str(c(df1, df2))
    #List of 6
    # $ year1     : Factor w/ 3 levels "2001","2002",..: 1 2 3
    # $ countries1: Factor w/ 3 levels "Canada","Mexico",..: 1 3 2
    # $ color1    : Factor w/ 3 levels "black","blue",..: 1 3 2
    # $ year2     : Factor w/ 3 levels "2010","2011",..: 1 2 3
    # $ countries2: Factor w/ 3 levels "France","Germany",..: 1 2 3
    # $ color2    : Factor w/ 3 levels "green","white",..: 2 3 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      相关资源
      最近更新 更多