(R) Добавление строк во фрейм данных с помощью cor () работает неправильно - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь создать аккуратный список значений корреляции, которые я затем хочу отсортировать. Однако, когда я пытаюсь создать этот список, я получаю список с корреляционными переменными, вставленными вокруг моего текста.

Я использую цикл for, основанный на двух условиях «если». Когда условие выполнено, я хочу добавить значение корреляции во фрейм данных. Если это не так, значение должно быть 0. Я попытался использовать rbind, чтобы добавить все строки вместе после выполнения одного из двух условий.

edit Я попытался добавить cbind (corl, i) в каждое из условий 'if', чтобы указать соответствующее значение индекса для каждого выхода корреляции, или 0, если условие if не выполнено , Это выдает ошибку «имена не совпадают с предыдущими именами». Кроме того, я попытался добавить cbind в конце цикла for (см. ##), но это также возвращает ошибку.

Однако я получаю предупреждение об ошибке, когда хочу связать значения корреляции с фиксированными значениями «0» (например, когда условие ложно).

Мой код в настоящее время выглядит следующим образом:

## correlation function

corr <- function(directory, threshold = 0) {

    idFiles <- data.frame();
    fileList <- dir(directory, full.names = TRUE);

    listLength <- 1:length(fileList);
        convert <- sprintf("%03d", listLength);

    for (i in listLength) {

        data <- read.csv(fileList[i]);
        idFiles <- rbind(idFiles, data);        

    }

    cases <- complete(direct, 1:length(fileList));
    corl <- data.frame();
    frame <- data.frame();

    for (i in listLength) {

        if (cases[i, 2] > threshold) {

            monitor <- subset(idFiles, ID == i);
            monitor <- na.omit(monitor);
            corl <- cor(monitor["nitrate"], monitor["sulfate"]);
            frame <- rbind(frame, corl);
        }

        else {  

            corl <- 0;
            frame <- rbind(frame, corl);
            }
    }
    ##frame <- cbind.fill(frame, listLength);

    frame <- as.matrix(frame);
    print(frame);

}

Когда я сейчас запускаю функцию, вывод, как уже упоминалось, представляет собой список значений, но, увы, без чистого индекса. Текст корреляционной функции (нитрат и сульфат) окружает значение индекса и затрудняет интерпретацию таблицы. Также я не могу запустить функцию sort () для этой таблицы, чтобы отсортировать значения, например, из от высокого к низкому, на основе номера индекса.

Может ли кто-нибудь дать мне предложение о том, как получить аккуратный список с индексами для значений корреляции, которые можно отсортировать, например, по адресу: увеличивается до убывающих значений, сохраняя при этом ссылку на порядковый номер?

Заранее спасибо за любую помощь!

...