Применять собственную функцию к списку в R

Я начинаюсь с R. Я взял образец в 2D в списке, который содержит 2 вектора 100 случайных образцов каждый.

2dsample <- take_samples(2,100,c(-100,100));

Также у меня есть функция, которая вычисляет коэффициенты m и b уравнения прямой в форме y=mx+b. Прямая предполагают случайным образом ввиду ранга стоимости, что они разграничивают квадрат.

vars <- sim_line(c(-100,100))

Цель состоит в том, чтобы применять функцию f(x,y)=y-ax-b. Где x - элемент 2dsample[1], и это элемент 2dsample[2], в es склон прямой (m) и b - перемещение прямой. Функция должна приклеивать этикетку на образец со знаком функции для каждой пары стоимости (x, y)

Я это попробовал с этой линией:

result <- lapply(muestra2d,function(x,y) (y-(vars[5]*x)-vars[6]))

думая, что lapply возьми элемент первого вектора и он это копирует в x, элемент второго вектора и это копирует в и и применяет функцию, но не правилен.

Как я могу делать это? Как я могу изображать графически прямую и точки одновременно? Как я делаю, чтобы помещать точки, которые оказываются негативами цвета и точками, которые оказываются положительными другого?

4
задан 06.03.2016, 00:07
1 ответ
set.seed(1L);
take_samples <- function(sample.num,elem.num,box) lapply(seq_len(sample.num),function(i) runif(elem.num,box[1L],box[2L]));
sim_line <- function(box) c(1,0);
box <- c(-100,100);
muestra2d <- take_samples(2L,100L,box);
vars <- sim_line(box);
signs <- sign(muestra2d[[2L]] - vars[1L]*muestra2d[[1L]] - vars[2L]);
par(xaxs='i',yaxs='i');
plot(NA,xlim=box,ylim=box,xlab='x',ylab='y',main='plot');
abline(vars[2L],vars[1L]);
with(setNames(muestra2d,c('x','y')),{
    points(x[signs>=0],y[signs>=0],col='green');
    points(x[signs<0],y[signs<0],col='red');
});

plot

первоначальный Ответ в SO из-за bgoldst

2
ответ дан 24.11.2019, 14:46

Теги

Похожие вопросы