r-data.table set仅将数字添加到某些j值

r-data.table set仅将数字添加到某些j值,r,data.table,R,Data.table,我有一个名为chance的data.table,在这里,我试图为每个小于100的值添加32 chance <- data.table(Fe = c(75, 50, 100, 60, 60, 50, 60, 100)) > chance Fe 1: 75 2: 50 3: 100 4: 60 5: 60 6: 50 7: 60 8: 100 任何帮助都将不胜感激!谢谢。您可以使用:=通过引用更新,如下所示: library(data.table) chance

我有一个名为chance的data.table,在这里,我试图为每个小于100的值添加32

chance <- data.table(Fe = c(75, 50, 100, 60, 60, 50, 60, 100))

> chance
    Fe
1:  75
2:  50
3: 100
4:  60
5:  60
6:  50
7:  60
8: 100
任何帮助都将不胜感激!谢谢。

您可以使用:=通过引用更新,如下所示:

library(data.table)
chance <- data.table(Fe = c(75, 50, 100, 60, 60, 50, 60, 100))
chance$Fe[chance$Fe < 100] = chance$Fe[chance$Fe < 100]+32

#or (using ifelse function)
chance <- data.table(Fe = c(75, 50, 100, 60, 60, 50, 60, 100))
chance$Fe <- ifelse(chance$Fe < 100, chance$Fe+32, chance$Fe)

#or ( using data.table way)
chance <- data.table(Fe = c(75, 50, 100, 60, 60, 50, 60, 100))
chance[Fe<100, Fe:=Fe+32]
chance[Fe < 100L, Fe := Fe+32L] 
for (col in myCols) {
    idx <- which(chance[[col]] < 100L)
    set(chance, i=idx, j=col, value=chance[[col]][idx] + 32L)
}
当函数非常适合此情况时的情况

library(dplyr)
chance <- data.table(Fe = c(75, 50, 100, 60, 60, 50, 60, 100)) %>%
  mutate(
    Fe_new = case_when(
    Fe < 100 ~ Fe + 32,
    TRUE ~ Fe)
    )
chance[Fe < 100L, Fe := Fe+32L] 
for (col in myCols) {
    idx <- which(chance[[col]] < 100L)
    set(chance, i=idx, j=col, value=chance[[col]][idx] + 32L)
}
library(dplyr)
chance <- data.table(Fe = c(75, 50, 100, 60, 60, 50, 60, 100)) %>%
  mutate(
    Fe_new = case_when(
    Fe < 100 ~ Fe + 32,
    TRUE ~ Fe)
    )