我实际上尝试从所有可能的功能组合中生成公式。 这是一个示例代码
namen<-expand.grid(c("weight",NA), c("height",NA),c("width",NA),c("volume",NA), stringsAsFactors=FALSE)
namen2<-as.data.frame(namen)
给我一个数据框,其中包含所有可能的功能组合WEIGHT,HEIGHT,WIDTH和VOLUME
for(i in 1:nrow(namen2)){ assign(paste("a", i, sep = ""), namen2[i,])}
确实给了我带有所需组合的载体
例如
a7
a7q<-t(as.data.frame(a7[!is.na(a7)]))
a7q
a7f<-as.formula(paste("type~",paste(a7q,collapse="+")))
a7f
很好
但我不知道如何在循环中为所有可能的组合执行此操作。
这是我的尝试:
for(i in 1:nrow(namen2)){assign(paste("a", i,"q", sep = ""), {eval(parse(text=paste("a",i,sep="")[!is.na(paste("a",i,sep=""))]))})}
但这包括NAs
你有什么想法??
答案 0 :(得分:1)
以下代码将返回一个列表,其中包含基于namen
的所有可能组合的公式:
l <- apply(head(namen, -1), 1, function(x)
reformulate(paste(na.omit(x), collapse = "+"), response = "type"))
您可以使用l
访问列表[[
的列表元素,例如l[[1]]
返回
type ~ weight + height + width + volume
<environment: 0x104298318>`