【问题标题】:Assign a negative sign to every value in a vector (in R)?为向量中的每个值分配一个负号(在 R 中)?
【发布时间】:2018-12-13 04:31:42
【问题描述】:

我想要这个:

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

看起来像这样:

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

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

【问题讨论】:

  • 只做V &lt;- -V
  • *-1 等。我觉得这可能是一个骗局,但实际上我没有看到另一个完全像这样的人。
  • 似乎没有重复。谢谢。

标签: r assign


【解决方案1】:

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

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

【讨论】:

  • dat[] &lt;- -abs(as.matrix(dat))
  • @jogo 或dat &lt;- all.neg(dat) 没有[] 因为class(all.neg(dat)) 返回[1] "data.frame"
【解决方案2】:

你可以的

 V * -1

-V # first mentioned in the comments by @RHertel

或类似的东西。通过赋值(更新对象),它看起来像这样:

v <- v * -1 # or -V

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多