2010-03-18 38 views
0

如果在R中快速地完成子句,則爲TRUE/FALSE。但是,如果參數變得更加複雜,它很快就會變得很難看。簡單和短if子句的combind語句

例如: 我可能想要根據一個單元格中的值(foo[1])對行(foo)執行不同的操作。 讓間隔是0:39和40:59和60:100

喜歡的東西不會退出:

(if foo[1] "in" 40:60){... 

事實上,我只看到至少有兩個途徑,如果條款和兩個else語句以及代碼底部第一個時間間隔的動作。隨着更多的間隔(或任何其他條件),它變得越來越複雜。

是否有一個最佳實踐(爲此目的或其他人)與一個簡單的結構和漂亮的設計來閱讀?

+0

我發現很難完全按照你的問題。你是否在談論「開關」的問題? – 2010-03-18 21:18:30

+0

@jorgusch - 如果您爲您的問題提供更多示例,您將得到更好的回覆。嘗試提供一些示例數據以及您希望輸出的樣子。 – Shane 2010-03-18 21:20:35

+0

我很抱歉,我想這個問題有點太籠統。很高興,Musa給了這個問題一個非常好的解決方案。下次我會保持簡單。 – jorgusch 2010-03-19 10:09:53

回答

1

不能完全確定,但我會建議使用這樣的:

f <- approxfun(0:100,c(rep(1,40),rep(2,20),rep(3,41)),method="c") 
fac <- f(foo) 
tapply(foo,fac,FUN,...) 

在那裏你可以使用任何功能的樂趣。

+0

那就是,真好!謝謝! – jorgusch 2010-03-19 10:10:32

0

不完全跟隨你的問題。你在尋找一個switch語句嗎?看看這個例子:

ccc <- c("b","QQ","a","A","bb") 
for(ch in ccc) 
    cat(ch,":",switch(EXPR = ch, a=1,  b=2:3), "\n")