R заполнить фрейм данных, применяя функцию, принимающую параметры в нескольких столбцах и строках - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть таблица пустых значений, которую я хотел бы заполнить, используя функцию, которая принимает несколько параметров в данной строке, а также в столбце.

Вот пример:

#make up var1 and var2 and join into data frame
var1 <- rnorm(500, 5, 2)
var2 <- rnorm(500, 20, 20)
df <- data.frame(var1, var2)

#define columns
x_values <- as.character(1:100)

#create columns of df and fill with NA
df[, x_values] <- NA

#define function that determines values in each cell
my_funct <- function(var1, var2, col){
  (var1^3 - var2^2)*col
}

Мои данные выглядят как

       var1       var2  1  2  3  4  5  6
1 7.0570704  31.508049 NA NA NA NA NA NA
2 0.6965604  32.288748 NA NA NA NA NA NA
3 4.9869819   4.369592 NA NA NA NA NA NA
4 8.0933870  31.038571 NA NA NA NA NA NA
5 6.1667702  26.887448 NA NA NA NA NA NA
6 3.1476294 -10.806836 NA NA NA NA NA NA

Для каждой данной ячейки, df[i, j] этого фрейма данных, я хотел бы заполнить его выводом my_funct, который принимает входные данные df[i, 'var1'], df[i, 'var2'] и значение имени столбца (для которого я мог бы просто использовать j-2).

Я написал вложенный цикл, который повторяется для каждой строки и столбца, но он был очень медленным.Я предполагаю, что применение или функция карты были бы намного более эффективными.Любая помощь?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы должны иметь возможность перебирать столбцы, не перебирая строки:

res <- sapply(1:100, function(i) {
  my_funct(df[, "var1"], df[, "var2"], i)
})

sapply возвращает матрицу, в которой каждый столбец соответствует i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...