2010-12-02 44 views
1

我現在已經rewriten我的問題,以使其更清晰粘貼邏輯條件

我想更換這樣一種情況:var爲在數據幀與糊狀或其他的解決辦法,因爲我的變量(數據幀是$ var)確實有很多條件值(?)(在我的例子中是a,b和c)。

subdataframe<-dataframe[var=="a"|var=="b"|var=="c",] 

我試圖製作一個列表(?)的條件值。

sample<-c("a","b","c") 

並且接着用漿糊使邏輯條件

subdataframe<-dataframe[paste("var",sample,sep="==",collapse="|"),] 

但是,這並不工作

請幫助=)

馬庫斯

+0

var`是什麼? – nico 2010-12-02 19:51:55

+3

你描述的名字是`eval`,支持它的語言(不知道是否有R) - 在那邊,他們有一個說法:如果`eval`是答案,那麼你問的是錯誤的問題。 – delnan 2010-12-02 19:52:35

+0

@delnan它實際上是`parse`,而不是`eval`(請參閱我的報價答案)。 +1因爲這麼近! ;-) – 2010-12-02 19:55:03

回答

7

希德財富( 106):

> fortune(106) 

If the answer is parse() you should usually rethink the question. 
    -- Thomas Lumley 
     R-help (February 2005) 

所以我會鼓勵你重新考慮你想要做什麼......

我猜想,你可以使用match%in%,以達到您想要的結果,但你還沒有告訴我們您的正在努力去做。

> sample <- c("a","b","c") 
> var <- c("a","d","c") 
> eval(parse(text=paste("var==",sample,"",sep="'",collapse="|"))) 
[1] TRUE FALSE TRUE 
> var %in% sample 
[1] TRUE FALSE TRUE 
1

約書亞對質疑解析的使用是正確的。

不過,這裏的回答你的問題:

paste("var==\"",sample, "\"",sep="",collapse="|") 

這將讓你所需的字符串,inculding報價。