Это может быть очень простой вопрос, но я не вижу, как ответить на него. У меня есть следующий код воспроизводимого, где у меня есть два маленьких dataframes, которые я использую, чтобы вычислить процентное значение, основанное на каждой общую колонку:prop.table не работает в петле?
#dataframe x
x <- structure(list(PROV = structure(c(1L, 1L), .Label = "AG", class = "factor"),
APT = structure(1:2, .Label = c("AAA", "BBB"), class = "factor"),
PAX.2013 = c(5L, 4L), PAX.2014 = c(4L, 2L), PAX.2015 = c(4L,0L)),
.Names = c("PROV", "APT", "PAX.2013", "PAX.2014", "PAX.2015"),
row.names = 1:2, class = "data.frame")
#dataframe y
y <- structure(list(PROV = structure(c(1L, 1L), .Label = "AQ", class = "factor"),
APT = structure(1:2, .Label = c("CCC", "AAA"), class = "factor"),
PAX.2013 = c(3L, 7L), PAX.2014 = c(2L, 1L), PAX.2015 = c(0L,3L)),
.Names = c("PROV", "APT", "PAX.2013", "PAX.2014", "PAX.2015"),
row.names = 1:2, class = "data.frame")
#list z (with x and y)
z <- list(x,y)
#percentage value of x and y based on columns total
round(prop.table(as.matrix(z[[1]][3:5]), margin = 2)*100,1)
round(prop.table(as.matrix(z[[2]][3:5]), margin = 2)*100,1)
, как вы можете видеть, она работает просто отлично. Теперь я хочу автоматизировать весь список, но я не могу понять, как получить результаты. Это мой простой код:
#for-loop that is not working
for (i in length(z))
{round(prop.table(as.matrix(z[[i]][3:5]), margin = 2)*100,1)}
попробовать 'для (я в 1: длина (г))' вместо ' для (i по длине (z)) '. И явно 'print (round (...))' в вашем цикле – scoa
Я знал, что это разоблачит мое отвлечение ... Я не видел, что я использовал длину вместо seq_along! Печать на самом деле не нужна, я буду использовать эту таблицу другими способами, чтобы я не хотел, чтобы вы много волновались! Thx – MaZe