这里直截了当,但大多数关于apply / plyr / dplyr的文档都在解释更复杂的操作 .
我想从 this_tbl
创建一个新的tibble
> this_tbl
# A tibble: 3 x 2
x y
<dbl> <dbl>
1 42 999
2 0 0
3 1 0
这样每个值> 0变为1,并且每个值<= 0变为0 .
> as_tibble(apply(this_tbl,2,function(x){ifelse(x>0, 1, 0)}))
# A tibble: 3 x 2
x y
<dbl> <dbl>
1 1 1
2 0 0
3 1 0
这样做很好,但是有更优雅的方法吗?
1 回答
dplyr::mutate_all
将函数应用于数据框中的所有列并返回结果 .从技术上讲,这不是将函数应用于“每个值”,而是作为一个整体应用于每个列,这要快得多 . 如果您希望逐个值地执行此操作,则可以创建该函数的矢量化版本 .