我正在運行一個實驗。我從1號到6號抽樣,我做了3次。在實驗的每次運行中,我執行一些邏輯來獲得「主要」向量。然後我重複實驗5次。我的代碼是:如何優化我的代碼,因此不使用循環
main<- vector("numeric",5)
for (i in 1:5)
{
s<-sample(c(1,2,3,4,5,6), 3, replace = FALSE)
print(s)
if(s[1]>3)
{
main[i]<-s[1]
}else
{
if(s[2]>3)
{
main[i]<-s[2]
}
else
{
main[i]<-s[3]
}
}
}
print(main)
當您運行,你會看到類似:
[1] 5 1 2
[1] 5 2 1
[1] 6 1 4
[1] 3 4 1
[1] 2 5 1
> print(main)
[1] 5 5 6 4 5
主要載體產生按照以下規則:
- 如果的第1個要素向量> 3,那麼結果是第一個元素
- 如果向量的第一個元素是< 3並且第二個元素大於3,那麼結果是t他第二個元素
- 否則結果是3元
我想知道有沒有更簡潔,矢量化,更高效的這樣的方式?使用vecotors而不是循環和if語句等...
謝謝。
嘗試使用'ifelse' ... –
應該在CodeReview而不是StackOverflow上詢問代碼優化問題http://codereview.stackexchange.com/ –