Я пишу функцию, которая берет каталог данных и считывает их, и (если он достигает порога завершенных случаев) вычисляет корреляцию между двумя переменными в данных («сульфат» и «нитрат») , Я хочу, чтобы это выполнялось в цикле for для создания числового вектора значений корреляции (одно значение для каждого файла в каталоге).
Однако, когда я запускаю код, он возвращает только последнее значение.
Я довольно новичок в R (поэтому я могу делать простые ошибки, и у меня установлена новейшая версия R). Ниже приведен код:
corr <- function(directory, threshold = 0) {
filenames3 <- list.files(directory, pattern = ".csv", full.names = TRUE)
loop_length <- length(filenames3)
correlation_values <- numeric()
for(i in loop_length) {
read_in_data3 <- read.csv(filenames3[i])
complete_boolean <- complete.cases(read_in_data3)
nobs2 <- sum(complete_boolean)
data_rmNA <- read_in_data3[complete_boolean, ]
if(nobs2 > threshold) {
correlation_values <- c(correlation_values,
cor(data_rmNA[["sulfate"]],
data_rmNA[["nitrate"]]))
}
}
correlation_values
}
corr("C:/Users/Danie/OneDrive/Documents/R/specdata")
Я попытался указать длину вектора, например, correlation_values <- numeric(length = loop_length)
. Это возвращает вектор правильной длины, но все значения равны 0, за исключением последнего, который работает правильно. Я рассматривал похожие вопросы, но все еще не могу найти решение своей проблемы.
Я предполагаю, что где-то теряю информацию в цикле (перезаписывая переменную или что-то в этом роде).
Заранее спасибо за любую помощь.