R: Почему stat_function принимает случайные (?), нецелые значения вместо ‘x’

#r #ggplot2 #curve

#r #ggplot2 #кривая

Вопрос:

Я не понимаю, почему stat_function принимает, казалось бы, случайные значения вместо значений x точно такими, какие они есть.

Например:

 library(ggplot2)

dat <- data.frame(x = c(1:10))

# values of x
dat
    x
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10 10

# print values of x plotted by stat_function
ggplot(dat, aes(x))  
  stat_function(fun = function(x) { x; print(x)})
  [1]  1.00  1.09  1.18  1.27  1.36  1.45  1.54  1.63  1.72  1.81  1.90  1.99
 [13]  2.08  2.17  2.26  2.35  2.44  2.53  2.62  2.71  2.80  2.89  2.98  3.07
 [25]  3.16  3.25  3.34  3.43  3.52  3.61  3.70  3.79  3.88  3.97  4.06  4.15
 [37]  4.24  4.33  4.42  4.51  4.60  4.69  4.78  4.87  4.96  5.05  5.14  5.23
 [49]  5.32  5.41  5.50  5.59  5.68  5.77  5.86  5.95  6.04  6.13  6.22  6.31
 [61]  6.40  6.49  6.58  6.67  6.76  6.85  6.94  7.03  7.12  7.21  7.30  7.39
 [73]  7.48  7.57  7.66  7.75  7.84  7.93  8.02  8.11  8.20  8.29  8.38  8.47
 [85]  8.56  8.65  8.74  8.83  8.92  9.01  9.10  9.19  9.28  9.37  9.46  9.55
 [97]  9.64  9.73  9.82  9.91 10.00
 

Может кто-нибудь объяснить это поведение, пожалуйста? И есть ли способ заставить x принимать только указанные значения dat ?

Я сталкиваюсь с проблемами, пытаясь построить функции, для которых ожидаются целочисленные значения x .

Спасибо

Комментарии:

1. он интерполирует… чтобы вернуть значения, добавьте n параметр … не знаю, поможет ли это в вашей реальной проблеме

2. Как уже упоминал user20650, функция вычисляется для последовательности вдоль оси x, поэтому эти значения не являются случайными. Я не понимаю, зачем вам нужен a stat_function() , если вы хотите использовать функцию, которая принимает ваши входные данные дословно. Вы можете просто сделать geom_line(aes(y = myfunction(x)) .

3. @teunbrand если вы хотите сделать этот комментарий ответом, я приму его. Приветствия