Опция base R
будет состоять в том, чтобы сначала создать объект с логическим условием (чтобы оно не изменилось позже), а затем использовать Map
для замены столбцов соответствующими значениями
i1 <- with(df, task == "fre" & prevt == "rep")
df[-1] <- Map(function(x, i) replace(x, i1, i), df[-1], c("ins", "swi"))
< hr> Или следуя той же логике в коде OP, сначала создайте логическое условие, а затем используйте это
library(dplyr)
df %>%
mutate(i1 = task == "fre" & prevt == "rep", # create logical column
task = replace(task, i1, "ins"),
prevt = replace(prevt, i1, "swi")) %>%
select(-i1) # remove the logical column
У вас могут быть приложения, которые выбрали подключение к одному и тому же процессору (соответствие ЦП).
Операционные системы часто хотят работать на одном процессоре, поскольку они могут хранить все свои данные в одном кэше L1. Если вам случится запустить свой процесс на том же ядре, на котором ваша ОС выполняет большую часть своей работы, вы можете испытать эффект замедления производительности вашего процессора.
Похоже, какой-то процесс хочет придерживаться тот же процессор. Я сомневаюсь, что это проблема оборудования.
Это не обязательно должна быть ваша ОС, это может делать какой-то другой фоновый демон.
Большинство современных процессоров имеют отдельное регулирование каждого ядра процессора из-за перегрева или функций энергосбережения. Вы можете попробовать отключить энергосбережение или улучшить охлаждение. Или, может быть, у вас плохой процессор. На моем i7 я получаю примерно 2-3 градуса разных температур 8 ядер в "датчиках". При полной нагрузке все еще есть отклонения.
Другая возможность состоит в том, что процесс переносится с одного ядра на другое во время работы. Я бы предложил установить привязку ЦП к «медленному» ядру и посмотреть, будет ли оно таким же быстрым.
Много лет назад, еще до эпохи многоядерности, я купил себе двухпроцессорный Athlon MP для «веб-разработки». , Внезапно мои веб-серверы Plone / Zope / Python замедлились до сканирования. Поиск в Google показал, что интерпретатор CPython имеет глобальную блокировку интерпретатора, но потоки Python поддерживаются потоками ОС. Потоки ОС были равномерно распределены между ЦП, но только один ЦП может получить блокировку за раз, поэтому все остальные процессы должны были ждать .
Установка привязки ЦП Zope к любому ЦП решила проблему.