For循环:替换比数据多一行

use*_*270 6 for-loop r

我是R的初学者并且有问题.真的很感激任何帮助!当我在以下(简化)的情况下应用for循环时,我收到一条错误消息,说"替换有5行,数据有4"

Country <- c("Germany", "France", "Italy", "Spain")
Unemploy <- c(2, 3, 4, 10)
Growth <- c(2, 7, 6, 9)
data <- data.frame(Country, Unemploy, Growth)

for (i in data$Country) {
     if (identical(data$Country[i], "France")) {
          data$Growth[i] <- "5"
     } else {
          data$Growth[i] <- "2"
     }
}
Run Code Online (Sandbox Code Playgroud)

发出以下消息:

Error in `$<-.data.frame`(`*tmp*`, "Growth", value = c("2", "2", "2",  : 
replacement has 5 rows, data has 4
Run Code Online (Sandbox Code Playgroud)

Jil*_*ina 7

ifelse改用

data[ ,"Growth"] <- ifelse(data[ , "Country"] == "France", "5", "2")
Run Code Online (Sandbox Code Playgroud)

  • 为什么混合`$`和`[`样式? (2认同)