Я пытаюсь изменить новую переменную из вида вычисления строки, скажем rowSums
, как показано ниже
iris %>%
mutate_(sumVar =
iris %>%
select(Sepal.Length:Petal.Width) %>%
rowSums)
в результате "sumVar" обрезается до своего первого значения (10.2):
Source: local data frame [150 x 6]
Groups: <by row>
Sepal.Length Sepal.Width Petal.Length Petal.Width Species sumVar
1 5.1 3.5 1.4 0.2 setosa 10.2
2 4.9 3.0 1.4 0.2 setosa 10.2
3 4.7 3.2 1.3 0.2 setosa 10.2
4 4.6 3.1 1.5 0.2 setosa 10.2
5 5.0 3.6 1.4 0.2 setosa 10.2
6 5.4 3.9 1.7 0.4 setosa 10.2
..
Warning message:
Truncating vector to length 1
Следует ли применять rowwise
? Или какой глагол использовать в такого рода вычислениях?
Изменить:
В частности, есть ли способ реализовать встроенную пользовательскую функцию с dplyr
?
Мне интересно, можно ли сделать что-то вроде:
iris %>%
mutate(sumVar = colsum_function(Sepal.Length:Petal.Width))
iris %>% select(Sepal.Length:Petal.Width) %>% rowSums()
работает нормально, ноiris %>% mutate(sumVar = iris %>% select(Sepal.Length:Petal.Width) %>% rowSums())
выдает сообщение об ошибке: плохие индексы 1 + предупреждающее сообщение. - person talat   schedule 08.12.2014.
(иногда я тоже делаю что-то глупое). - person Davide Passaretti   schedule 08.12.2014sum
, которые уже имеют эффективную векторизованную альтернативу по строкам, в настоящее время правильный способ:df %>% mutate(total = rowSums(across(where(is.numeric))))
across
может принимать все, чтоselect
(например,rowSums(across(Sepal.Length:Petal.Width))
также работает). См. Полный рассказ о построчном и через - person Fons MA   schedule 15.04.2021