2013-02-19 44 views
3

圖形字符串矢量我想遍歷稱爲country一個字符串矢量,其中包含國家代碼,如AFGETH遍歷的R中

Stata的代碼是這樣的:

levelsof country, local(xtry) 
foreach x in local xtry: 
graph command here if xtry=="`x'" 
graph save mygraph 

} 

是否有可比性命令levelsof,還有一個「如果」的數據限制在特定的國家代碼,這是一個字符串,從每個圖將被創建的語句?

+0

你可能不想像這樣循環它。你可能想從'plyr'包中找到'tapply'或'** ply'函數。 – 2013-02-19 07:00:50

+0

根據你想要對數據做什麼,有一系列函數將函數應用於列表,列,行等。非常有用替代許多for語句。鍵入?應用到R控制檯。 – N8TRO 2013-02-19 07:01:24

回答

3

你會使用這樣的:

for (cn in levels(country)) 
    { 
    if (cn=="x") 
     { 
     <do something> 
     } 
    else 
     { 
     <do something else> 
     } 
    } 

如果要檢查多個國家,用戶可以使用

if (cn == "x" | cn == "y") 

或也

if (cn %in% c("x", "y", "z")) 
+0

謝謝@ nico !!! – user1259823 2013-02-19 16:14:59

0

順便說一句,在應用一組函數實際上是一個類似的東西,如果與構建循環不相同的話,那就是apply一組函數是這種循環的包裝器,它們專用於不同的數據結構和需求 - 這是一種更循環的循環方式。我不知道速度提升聲明有多有效 - 我很懷疑。除此之外,如果我明白你在問什麼(我不知道stata),用R對數據進行子集分析可能會更容易,然後爲每個子集做幾個圖。

+0

作爲一個Stata人,我確認這個建議與問題的Stata內容相符。我對Stata感興趣的一面,在我看來,要求如何在R中做某些事情要比翻譯Stata代碼更好。 R用戶的數量顯然比知道Stata的合格R用戶的數量要大得多!然而,這個論壇期待一些問題的代碼;而且只顯示另一種語言的代碼意味着沒有努力開始用所需語言編寫代碼。 – 2013-02-19 12:38:28

+0

應該是:有能力的R用戶的數量顯然比知道Stata的有能力的R用戶的數量要大得多! – 2013-02-19 13:05:18