【发布时间】:2014-06-03 13:31:55
【问题描述】:
我正在用 R 编写一个函数,但我陷入了向量子集。
假设我有以下向量:
ratio<-c(0,0,0,0,1.3,1.4)
我想对所有值 > 0 的向量进行子集化,如果存在一个或多个 0,我想在最终向量中只包含一个 0。
预期输出:
subset<-(0,1.3,1.4)
我尝试了以下方法:
sebset1<-ratio[ratio>0]
subset1
[1] 1.3 1.4
然后我使用 if:
subset2<- if(c(ratio==0)) {append (subset1, 0,after=length(subset1))}
我收到此警告:
Warning message:
In if (c(ratio == 0)) { :the condition has length > 1 and only the first element will be used
但它有效:
subset2
[1] 1.3 1.4 0.0
但是,此解决方案不适用于没有 0 的向量,例如:
ratio2<-c(3,4,2,3,4)
因为当我使用
if
我得到一个 NULL 向量作为
subset2
知道我可以在哪里改进我的代码吗?
非常感谢您的帮助!
【问题讨论】:
-
如果
0是唯一 可以多次出现的值,那么unique(ratio[ratio >= 0])就可以了。 -
非常感谢您的回答。不幸的是,情况并非如此