【发布时间】:2017-02-04 04:07:10
【问题描述】:
我尝试编写一个函数,将向量中的值替换为相同的值除以二。
# replacement function for a vector
rep <- function(x)
x.half <- {abs(replace(x, which(x<0),x/2))}
但是,我知道这个函数不能正常工作,因为如果我用负数和正数模拟一个向量,我会得到错误的结果:
a <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13,21,-21,25,-25)
a.rep <- rep(a)
# data frame to test
test <- cbind(a,a.rep)
此外,当我将此函数应用于向量 a 时,我会收到如下警告消息:
警告信息: 在替换(x, which(x
显然,我的功能有问题。
【问题讨论】:
-
那是我函数的一个很短的版本,很好。但是我只需要将负值减半,所有正值都不能更改。
-
a[which(a<1)]=a[which(a<1)]/2这样就可以了,不需要为此编写函数。 -
刚刚意识到这是最好和最短的答案:D 谢谢@ChirayuChamoli
-
@mariansess 感谢您的友好评论。