我在R
學習for loop
。我試圖找出如何在data.frame
的特定variable
中製作for loop
。我看了幾個例子在計算器中,例如Q1,Q2,Q3,但沒有一個對我所尋找的是有用的!如何在data.fame中爲變量執行for-loop?
作爲使用mtcars
數據集的例子,讓我們說,我想執行for loop
到:
的面貌邁向cyl
,並定義cyl 4,6,8,
寫,並以strings
(low, medium, high
),分別。
for (i in mtcars$cyl) {
if (mtcars$cyl == 4){
print("low")}
if (mtcars$cyl == 6) {
print ("medium")}
if (mtcars$cyl == 8) {
print ("high")}
}
當然,情況並非如此!
什麼期望是這樣的:
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
皈依:
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 medium 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 medium 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 low 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 medium 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 high 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 medium 225 105 2.76 3.460 20.22 1 0 3 1
與解釋任何幫助,不勝感激!
無需循環:'mtcars $ NEWCOL < - 因子(mtcars $團委,標籤= C( 「低」,「中等「,」高「))'詳見'?factor'。 – Frank
所以它通常傾向於儘可能地避免在R中出現循環。這就是爲什麼弗蘭克斯迴應和D.B.的答案的第一部分確實是更正確的解決方案。與其花時間使用循環,而循環速度較慢並最終變得複雜得多,可以考慮花時間學習數組函數,並對「應用」函數組感到滿意。當涉及到代碼的整潔和可讀性以及它們可能執行給定操作的速度時,它們是FAR優越的。 – SeldomSeenSlim
@AronBoettcher非常感謝建設性的建議! – Daniel