作为一个例子,我有一个20个混合正负整数的向量。 我想生成一个新的向量,其中每个正整数加在一起,直到出现负整数,然后添加每个负数,直到再次出现正数。
e.g。 2 4 3 -4 -4 -3 -2 3 4 5 2 5 -4 -4 -3 -3 3 4 5
将成为9 -13 19 -14 12
。
我应该使用哪种代码?这甚至可能吗?
答案 0 :(得分:6)
Button test = findViewById(R.id.btn_test);
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(UserActivity.this, "An error occurred.", Toast.LENGTH_LONG).show();
}
});
答案 1 :(得分:2)
您还可以将tapply
与diff
,abs
,sign
和cumsum
构建的分组结合使用。
使用d.b的数据,结果是
unname(tapply(x, cumsum(c(0, abs(diff(sign(x))))), sum))
[1] 24 -17 6 -35 29 -10 4 -17 14 -19 15 -9
符号返回-1,1和0,具体取决于其输入值。 diff
将确定符号发生变化的位置,abs
将diff
变为和指标,剥离负值,cumsum
用于构建tapply
的群组