Как мне написать функцию в R с 2 параметрами с возвратом процентов? - PullRequest
0 голосов
/ 30 октября 2018

У меня нет особого опыта написания функций в R, и я пытаюсь написать функцию с 2 параметрами - первый - вектор, а второй - число. Функция вернет процентное содержание элементов в векторе, которое меньше, чем то же самое (то есть совокупное распределение ниже предоставленного значения). Например, если вектор имеет 5 элементов (1, 2, 3, 4, 5), причем 2 - это число, переданное в функцию, функция вернет значение 0,2 (поскольку 20% чисел были ниже 2). Это то, что я до сих пор:

testfunction <- function(myVector, x)
{
uniqueCounts(myVector > x)/x
}

1 Ответ

0 голосов
/ 30 октября 2018

Здесь у вас правильный синтаксис

your_function <- function(arg1, arg2){
    do_something
}

Здесь вам также нужно выражение, которое будет оцениваться так, как вы описали. @TimBiegeleisen предоставил один для вас, sum(a > b) дает число вхождений значения больше, чем b в векторе a. Пропорция sum(a > b)/ length(a) даст вам пропорцию значений в a, которые больше, чем b, и должны находиться в диапазоне от 0 для векторов a, которые не имеют значений, превышающих b, и 1 для векторов со всеми значениями больше b и даст NaN, если a равно NULL, NA, если a равно NA. Если вы хотите, чтобы a или b имели определенные свойства, вы можете добавить проверку ошибок.

testfunction <- function(myVector, x){
    sum(myVector > x)/length(myVector)
}
tesfunction(1:10, 2)
# [1] 0.8

В R последнее вычисленное выражение возвращается функцией, если нет явного return. Если вы хотите применить определенные свойства, вы включаете вызов stop(), например,

testfunction <- function(myVector, x){
  if(length(x) != 1) stop("x must have length == 1")
  sum(myVector > x)/length(myVector)
}
testfunction(1:10, 2:3)
# Error in testfunction(1:10, 2:3) : x must have length == 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...