2016-10-06 45 views
-2

從具有值P或FI的列狀態的給定數據幀中嘗試創建另一個列State1,其值爲1或0取決於國家是否是P或F. 以下是我寫的當使用if語句時,試圖應用非函數時出現錯誤

for(i in 1:nrow(df)){ 
    if (df$State(i)==P) {df$State1(i)<- 1} 
    else {df$State1(i) <- 0} 
    } 

不過,我不斷收到錯誤「嘗試應用非功能」的代碼。我的代碼看起來很簡單,我不知道爲什麼我得到非函數錯誤。 請幫忙 謝謝 KS

+0

嘗試行'df $ State(1)' - 它給你什麼? – SymbolixAU

+0

由於括號用於R中的函數,因此您會收到此錯誤。因此,語法「df $ State(i)」表明df $ State是您用參數i調用的函數。 – pdb

回答

1

您的語法不正確。應該是:

for(i in 1:nrow(df)){ 
    if (df$State[i]=="P") {df$State1[i] <- 1} 
    else {df$State1[i] <- 0} 
} 
0

Fridolin Linder提供了正確的語法。你也可以使用向量化的ifelse函數,使用更短的命令來做到這一點

df$State1 <- ifelse(df$State == "P", 1, 0) 
+0

或者只是'df $ State ==「P」'應該很好,或者至少'as.integer(df $ State ==「P」)' –

+0

是的,但是這有點不合理。 – pdb

相關問題