B.M*_*.W. 1 r list-comprehension
我来自 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]
Run Code Online (Sandbox Code Playgroud)
假设我在 R 中有一个向量,我怎样才能得到相同的结果。
a <- c(1,2,3,-1,-2, 0,1,-9)
Run Code Online (Sandbox Code Playgroud)
用 ifelse
> ifelse(a>0, a, 0)
[1] 1 2 3 0 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
?ifelse详情请参阅。
您还可以使用[选择满足条件 ( a<=0) 的值并将它们替换为 0
> a[a<=0] <- 0
> a
[1] 1 2 3 0 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
见?"["。
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1752 次 |
| 最近记录: |