我想了解如何在不使用循環的情況下條件替換數據框中的值。我的數據幀結構如下:條件替換data.frame中的值
> df
a b est
1 11.77000 2 0
2 10.90000 3 0
3 10.32000 2 0
4 10.96000 0 0
5 9.90600 0 0
6 10.70000 0 0
7 11.43000 1 0
8 11.41000 2 0
9 10.48512 4 0
10 11.19000 0 0
和dput
輸出是這樣的:
structure(list(a = c(11.77, 10.9, 10.32, 10.96, 9.906, 10.7,
11.43, 11.41, 10.48512, 11.19), b = c(2, 3, 2, 0, 0, 0, 1, 2,
4, 0), est = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), .Names = c("a",
"b", "est"), row.names = c(NA, -10L), class = "data.frame")
我想要做的,是檢查的b
值。如果b
爲0,我想將est
設置爲值a
。據我所知df$est[df$b == 0] <- 23
將est
的所有值設置爲23,當時b==0
。我不明白的是當條件爲真時如何將est
設置爲值a
。例如:
df$est[df$b == 0] <- (df$a - 5)/2.533
給出了以下警告:
Warning message:
In df$est[df$b == 0] <- (df$a - 5)/2.533 :
number of items to replace is not a multiple of replacement length
有沒有我可以通過相關的細胞,而不是向量的方法嗎?
這值得一給予好評,如果你第一次添加或者是鏈接到R-地獄頁或者用'$'(或者理想情況下都是)來總結問題。 – Andrie
+1雖然我認爲在這種情況下'''運算符是完美無缺的。 (另外,我注意到,儘管你的警告你自己使用'''...) – Andrie
@Andrie:是的,我在它的工作原理中使用過它(這不是那麼有幫助:-))。 OP試圖用它來定義哪些元素正在被執行,哪些是故障發生的地方。我只是用它來定義一個選擇數據框元素的條件。但你知道這一點:-) –