Как переписать Python Функциональность в R - PullRequest
0 голосов
/ 12 апреля 2020

Как преобразовать следующий код python в программирование на R?

def weirdFaculty(v):
    n = len(v)

Преобразовать все нули в -1, поскольку ноль дает нам отрицательный результат -1:

for i in range(n):
    if not v[i]:
        v[i] = -1

# Find the total sum

totalSum = sum(v)
currSum = 0

Найти точку, в которой текущая сумма больше общей суммы

for i in range(n):
    if currSum > totalSum:
         return i
    currSum += v[i]
    totalSum -= v[i]
return n

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Первая функция будет

weirdFaculty <- function(v) {
        v[v == 0] <- -1
        sum(v)
  }
1 голос
/ 12 апреля 2020

Для первого, следующая функция R zeros_to_minus_one выполняет работу:

zeros_to_minus_one <- function (vector) {
  for (i in 1:length(vector)){
    if (vector[i] == 0){
      vector[i] <- -1
    }
  }
  return(vector)
}

vector <- c(0,1,0,1,0)
zeros_to_minus_one(vector) # Returns: -1  1 -1  1 -1

Для второго, следующая функция R find_point делает то, что вы хотите:

find_point <- function (vector) {
  currSum <- 0
  totalSum <- 0
  for (i in 1:length(vector)){
    if (currSum > totalSum){
      return(i)
    }
    currSum  <- currSum + vector[i]
    totalSum <- currSum - vector[i]
  }
}

vector <- c(0,1,0,1,0)
find_point(vector) # Returns: 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...