1

私はPythonの世界から来ました。正の数のみを取得し、正でない数をゼロに設定したい。Python の場合:

>> a = [1,2,3,-1,-2, 0,1,-9]
>> [elem if elem>0 else 0 for elem in a]
[1, 2, 3, 4, 0, 0, 0, 1, 0]

Rにベクトルがあるとします。どうすれば同じ結果を得ることができますか。

a <- c(1,2,3,-1,-2, 0,1,-9)
4

1 に答える 1

6

使用するifelse

> ifelse(a>0, a, 0)
[1] 1 2 3 0 0 0 1 0

詳細については、を参照?ifelseしてください。

を使用[して、条件 ( ) を満たす値を選択しa<=0、それらを 0 に置き換えることもできます。

> a[a<=0] <- 0
> a
[1] 1 2 3 0 0 0 1 0

を参照してください?"["

a<=0ブール値ベクトルを提供し、それをインデックスとして使用して、0 以下の値を識別し、目的の置換を実行できます。

または のいずれ[かを使用ifelseするのが最も一般的ですが、ここでは他の代替手段をいくつか示します。

a[which(a<=0)] <- 0       
#----------------------
a[a %in% 0:min(a)] <- 0    # equivalent to a[!a %in% 0:max(a)] <- 0 
#----------------------
match(a, 1:max(a), nomatch=0 )
#----------------------
pmax(a, 0)
于 2013-10-24T16:48:41.297 に答える