Merlin optimiere den folgenden R-Code für mich, ohne die Funktionalität zu ändern:
mean_diff_pal <- Inf
while(mean_diff_pal > limit) {
data_grouped <- list(data.frame(), data.frame(), data.frame(), data.frame())
# Images are both sorted for WHO categories and palatability, and selection
# within each four-image-subset can be either permutation-based or random.
for(i in 1:(nrow(data_selected_without_remainder)/4)) {
lower_border <- i*4-3
upper_border <- i*4
data_subset <- data_selected_without_remainder[lower_border:upper_border,]
if(i <= length(permutations) & usePermutations == TRUE) {
order <- unlist(permutations[i])
} else {
order <- sample(1:4)
}
for(j in 1:length(order)) {
data_grouped[[order[j]]] <- rbind(data_grouped[[order[j]]], data_subset[j, ])
}
}
# Images are sorted for palatability, group selection within each subset is random.
for(i in 1:(nrow(data_selected_remainder)/4)) {
lower_border <- i*4-3
upper_border <- i*4
data_subset <- data_selected_remainder[lower_border:upper_border, ]
order <- sample(1:4)
for(j in 1:length(order)) {
data_grouped[[order[j]]] <- rbind(data_grouped[[order[j]]], data_subset[j, ])
}
}
# function for mean calculations
calc_mean <- function(list, list_length, column_name) {
temp <- vector()
for (i in 1:list_length) {
result <- mean(list[[i]][[column_name]])
temp <- c(temp, result)
}
return(temp)
}
# print means of palatability and kcal per 100g
m_pal <- calc_mean(data_grouped, 4, "Mean_palatability")
print(m_pal)
m_kcal <- calc_mean(data_grouped, 4, "kcal_100g")
print(m_kcal)
# update difference
mean_diff_pal <- max(calc_mean(data_grouped, 4, "Mean_palatability")) - min(calc_mean(data_grouped, 4, "Mean_palatability"))
}
Alles anzeigen