Как изменить масштаб матрицы очков? - PullRequest
3 голосов
/ 10 декабря 2010

Теперь я делаю это так:

d = approx(density(csvdata[,'X'],n=5000),xout=csvdata[,'X'])
dfact = 40/max(d$y)
for(i in 1:nrow(csvdata)) {
  d$y[i] = (d$y[i]*dfact)-20
}

То, что я делаю здесь, это функция изменения масштаба плотности, которая всегда будет больше 0, чтобы отображаться снизу моего графика, который находится на -20, и всегда подходит к вершине, которая на +20, так что я более легок возможность обнаружить любые неровности в линии. Теперь, как вы можете видеть, я делаю это с помощью циклов, но, может быть, есть несколько сборок для одного лайнера?

1 Ответ

3 голосов
/ 10 декабря 2010

y - это вектор, а * и - - векторизованные функции, поэтому вам не нужно циклически перемещаться по вектору чисел, выполняя вычисления по одному за раз. Просто сделайте их все сразу:

d$y <- (d$y * dfact) - 20

или лучше (нет d$),

d <- within(d, y <- (y * dfact) - 20)

dfact - скаляр (вектор длины 1 в R, так как он не имеет отдельного понятия скаляра), но R будет расширяться dfact ( recycle - правильная терминология в R ) до необходимой длины, чтобы вышеуказанные вычисления продолжались как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...