Настройте существующую функцию в R - PullRequest
1 голос
/ 06 марта 2019

Я хочу изменить условие в функции psych::polychoric в R. В частности, я хочу увеличить предел различных реализаций переменной с 8 до 10 в строке 77 кода. Я могу вручную увеличить лимит, позвонив по номеру

trace(polychoric, edit=TRUE)

Поскольку сценарий предназначен для воспроизведения моей бумаги, я хочу сделать обработку как можно более плавной, избегая ручного редактирования. Есть ли способ отредактировать функцию по куску кода, например заменив if (nvalues > 8) на if (nvalues > 10) в коде другой функцией?

Любые предложения будут высоко оценены.

1 Ответ

2 голосов
/ 06 марта 2019

найдите местоположение в функции, которую вы хотите изменить

as.list(body(psych::polychoric))

Изменить функцию

trace(psych::polychoric, quote(nvalues > 10), at=11)

Убедитесь, что вы изменили то, что хотите изменить

trace(psych::polychoric, edit=TRUE)

Установить функцию обратно на оригинал

untrace(psych::polychoric)

-----

Похоже, fix может быть проще реализовать для этой задачи

fix(polychoric)

открывает панель, в которой вы можете изменить код и изменить его, нажав «Сохранить».

Это сделает функцию локальной для вашей глобальной среды, вы можете проверить это, посмотрев на оригинальную функцию trace(polychoric, edit = T) покажет nvalues > 10, а trace(psych::polychoric, edit = T) покажет nvalues > 8. В следующий раз, когда вы перезагрузите psych, вы будете использовать оригинальную функцию. Немного ручного взлома - но, надеюсь, сработает для этой ситуации.

...