如何从字符向量中提取NA

时间:2013-12-07 09:15:26

标签: r

我实际上尝试从所有可能的功能组合中生成公式。 这是一个示例代码

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

你有什么想法??

1 个答案:

答案 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>`