为向量中的每个值分配一个负号(在R中)?

时间:2018-07-04 17:34:06

标签: r assign

我想要这个:

V <- c(2, 3, 4, 5, 6)
V <- as.data.frame(V)

看起来像这样:

[1] -2 -3 -4 -5 -6

基本上与abs()函数相反。谢谢。

2 个答案:

答案 0 :(得分:2)

我相信,如果您事先不知道向量的所有值是否均为正,那么您应该执行以下代码。

V <- c(2, 3, 4, 5, 6)
W <- c(-2, -3, -4, -5, -6)
X <- c(2, -3, 4, -5, 6)

all.neg <- function(x) -1*abs(x)

让我们尝试一下。

all.neg(V)
#[1] -2 -3 -4 -5 -6

all.neg(W)
#[1] -2 -3 -4 -5 -6

all.neg(X)
#[1] -2 -3 -4 -5 -6

如果要将其应用于data.frame,请按常规方法进行操作。

dat <- data.frame(V, W, X)

dat[] <- lapply(dat, all.neg)
dat
#   V  W  X
#1 -2 -2 -2
#2 -3 -3 -3
#3 -4 -4 -4
#4 -5 -5 -5
#5 -6 -6 -6

答案 1 :(得分:1)

你可以做

 V * -1

-V # first mentioned in the comments by @RHertel

或类似的东西。分配后(更新对象)看起来像这样:

v <- v * -1 # or -V

您也可以使用=进行分配,但这违反了样式指南。

  

[1] -2 -3 -4 -5 -6