任務是將“df”中的所有負數乘以 10。
所以我只能將所有內容乘以 10,但是當我添加一個 if 陳述句時,一切都會停止作業。
df =
x <- c('a', 'b', 'c', 'd', 'e')
y <- c(-4,-2,0,2,4)
z <- c(3, 4, -5, 6, -8)
# Join the variables to create a data frame
df <- data.frame(x,y,z)
df
##
x y z
1 a -4 3
2 b -2 4
3 c 0 -5
4 d 2 6
5 e 4 -8
到目前為止我的代碼
df2 <- df
df2
for(i in 2:ncol(df2)) {
df2[ , i] <- df2[ , i] *10
}
df2
uj5u.com熱心網友回復:
cbind(df[1], 10^(df[-1] < 0) * df[-1])
x y z
1 a -40 3
2 b -20 4
3 c 0 -50
4 d 2 6
5 e 4 -80
uj5u.com熱心網友回復:
dplyr您可以使用函式mutate和來實作此目的across。
library(dplyr)
df %>%
mutate(across(-x, ~ifelse(. < 0, 10 * ., .)))
這表示“對于除 x 之外的所有列,在值 < 0 的情況下乘以 10,否則保持原樣”。
結果:
x y z
1 a -40 3
2 b -20 4
3 c 0 -50
4 d 2 6
5 e 4 -80
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420115.html
標籤:
