r-data.table set仅将数字添加到某些j值
我有一个名为chance的data.table,在这里,我试图为每个小于100的值添加32r-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(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)
)