Умножьте переменную в трубе - PullRequest
0 голосов
/ 11 сентября 2018

Я новичок в каналах R. У меня есть такой фрейм данных

library(magrittr)
library(dplyr)
df = data.frame(a= c(1,2,3,4,5), b = c(3,4,5,6,7))

Результат -

df_min = df %>% filter(a > 2) %$%  as.data.frame( cbind(a=a*10, b)) 
> df_min
   a b
1 30 5
2 40 6
3 50 7

Есть ли более удобный и короткий путь вместо %$% as.data.frame( cbind(a=a*10, b))?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Более удобный способ сделать это следующим образом:

library(magrittr)
library(dplyr)

df = data.frame(a= c(1,2,3,4,5), b = c(3,4,5,6,7))

df_min = df %>% filter(a>2) %>% mutate(a=a*10)

class(df_min)
df_min

Вы можете прочитать о mutate здесь и здесь некоторые примеры

0 голосов
/ 11 сентября 2018

более короткий вариант с data.table

library(data.table)
setDT(df)[a > 2, .(a = a * 10, b)]
...