私は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)
私は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)
使用する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)