R函数可将数据框剥离为多边形

时间:2019-10-10 23:02:46

标签: r

我需要更新代码以使其更加动态。

我的数据框有时可以包含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 :(得分:0)

您需要使用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]))

答案 1 :(得分:0)

如果将数据转换为矩阵,则最终尝试将起作用。

例如

# 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