Функция R для разделения данных в отдельные столбцы поли - PullRequest
1 голос
/ 11 октября 2019

Мне нужно обновить свой код, чтобы сделать его более динамичным.

Мой фрейм данных может иногда содержать 6 переменных, а иногда - 9 переменных. Мне нужно создать фрейм данных, основанный на рассматриваемых переменных, содержащий все различные переменные и соответствующие переменные второго порядка.

Мой код раньше выглядел так

df3 <- data.frame(poly(test$hub, test$vacations, test$slot, test$income, test$market_size, test$average_distance_m, degree = 2, raw = TRUE))
df6 <- data.frame(poly(test$hub, test$vacations, test$slot, test$income, test$market_size, test$average_distance_m, test$noise1, test$noise2, test$noise3, degree = 2, raw = TRUE))

Мне было интересноесли бы был какой-то способ сделать это более динамичным. Я пытался

df <- data.frame(poly(test, degree = 2, raw = TRUE))

, где тест будет обновляться, но я продолжаю получать ошибку в FUN (X, Y, ...): не числовой аргумент для бинарного оператора

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Если вы преобразуете свои данные в матрицу, ваша последняя попытка сработает.

Например,

# typing all variables in manually
original = with(mtcars, poly(mpg, cyl, disp, hp, drat, wt, degree=2, raw=TRUE))
#OR
# convert dataframe to matrix and apply poly (lazily using indices instead of names)
using_matrix = poly(as.matrix(mtcars[1:6]), degree=2, raw=TRUE)

all.equal(original, using_matrix, check.attributes=FALSE)
# TRUE
0 голосов
/ 11 октября 2019

вам нужно использовать do.call

  my_funct = function(dat) do.call(poly,c(unname(dat),raw=TRUE,degree=2))
  (df_2vars <- my_funct(iris[1:2]))
  (df_4vars <- my_funct(iris[1:4]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...