我从R开始 我在列表中选了一个2d样本。此列表包含2个向量,其中包含100个元素:
muestra2d <- take_samples(2, 100, c(-100, 100));
我有一个函数,用于计算给定范围内框中y=mx+b
形式的行的系数m和b。
vars <- sim_line(c(-100, 100))
好的,我的目标是应用一个函数f(x,y)=y-ax-b
,其中x
是muestra2d[1]
的元素,y
是muestra2d[2]
的元素,{{1 ()是线的斜率(m),a
是线的偏移量。该函数必须使用每对值(x,y)的函数符号标记样本。
我已尝试过这一行
b
思考lapply从列表的第一个向量中获取一个元素并将其复制到result <- lapply(muestra2d, function(x,y) (y-(vars[5]*x)-vars[6]))
中,对x
执行相同操作并将函数应用于此值,但它并不是很好想法。
我怎么能这样做?如何同时用另一种颜色绘制线条,点和负点?
答案 0 :(得分: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');
});