Цикл For в R не может получить количество строк в кадре данных - PullRequest
1 голос
/ 13 апреля 2019

Я пытаюсь использовать цикл for в R, чтобы получить количество строк в кадрах данных.

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".Вы можете мне помочь?

1 Ответ

1 голос
/ 13 апреля 2019

Мы можем поместить его в list, пройти через list и print количество строк

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

Проблема с конкатенацией (c) - это unclass es data.frame и преобразование его в list из vector. Поскольку в файле data.frame имеется 3 столбца, то это будет list из length 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...