根据公式(R)转换数据框
Convert a data frame according to formula (R)
我有一个数据框DF1
,例如:
DF1=data.frame(LA=1:5,VA=2:6)
我想估计一个模型(不使用标准函数),我的公式是(例如)~ LA + VA + I(LA*VA)
。 R中有没有这样一个函数可以根据我的公式将我的原始数据框转换成现成的数据框?例如:
magicFunction(DF1,"LA + VA + I(LA*VA)")
或
magicFunction(DF1,c("LA", "VA", "LA*VA"))
那会 return:
LA VA V3
1: 1 2 2
2: 2 3 6
3: 3 4 12
4: 4 5 20
5: 5 6 30
我的实际问题是我的公式比 ~ LA + VA + I(LA*VA)
复杂很多(而且在这个阶段还没有真正确认),所以我正在寻找一个可以处理这个问题的函数。
(data.table 的解决方案也适用于我)
head(mtcars[c("cyl","gear")])
# cyl gear
#Mazda RX4 6 4
#Mazda RX4 Wag 6 4
#Datsun 710 4 4
#Hornet 4 Drive 6 3
#Hornet Sportabout 8 3
#Valiant 6 3
head(model.frame(cyl~I(cyl*gear), data = mtcars))
# cyl I(cyl * gear)
#Mazda RX4 6 24
#Mazda RX4 Wag 6 24
#Datsun 710 4 16
#Hornet 4 Drive 6 18
#Hornet Sportabout 8 24
#Valiant 6 18
正如@alistaire 指出的那样:
> model.frame(~LA+VA+cbind(V3 = I(LA*VA)), data = df)
# LA VA V3
#1 1 2 2
#2 2 3 6
#3 3 4 12
#4 4 5 20
#5 5 6 30
我有一个数据框DF1
,例如:
DF1=data.frame(LA=1:5,VA=2:6)
我想估计一个模型(不使用标准函数),我的公式是(例如)~ LA + VA + I(LA*VA)
。 R中有没有这样一个函数可以根据我的公式将我的原始数据框转换成现成的数据框?例如:
magicFunction(DF1,"LA + VA + I(LA*VA)")
或
magicFunction(DF1,c("LA", "VA", "LA*VA"))
那会 return:
LA VA V3
1: 1 2 2
2: 2 3 6
3: 3 4 12
4: 4 5 20
5: 5 6 30
我的实际问题是我的公式比 ~ LA + VA + I(LA*VA)
复杂很多(而且在这个阶段还没有真正确认),所以我正在寻找一个可以处理这个问题的函数。
(data.table 的解决方案也适用于我)
head(mtcars[c("cyl","gear")])
# cyl gear
#Mazda RX4 6 4
#Mazda RX4 Wag 6 4
#Datsun 710 4 4
#Hornet 4 Drive 6 3
#Hornet Sportabout 8 3
#Valiant 6 3
head(model.frame(cyl~I(cyl*gear), data = mtcars))
# cyl I(cyl * gear)
#Mazda RX4 6 24
#Mazda RX4 Wag 6 24
#Datsun 710 4 16
#Hornet 4 Drive 6 18
#Hornet Sportabout 8 24
#Valiant 6 18
正如@alistaire 指出的那样:
> model.frame(~LA+VA+cbind(V3 = I(LA*VA)), data = df)
# LA VA V3
#1 1 2 2
#2 2 3 6
#3 3 4 12
#4 4 5 20
#5 5 6 30