Выбор дел из массива в R - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть функция gentimes (10000), которая генерирует массив значений (w1, w2) 10000x2, например:

gentimes = function(nreps) 
{ 
  x=c(rexp(nreps,1/5),rexp(nreps,1/5)) 
  x1=min(x) 
  x2=max(x) 
  y1=rexp(nreps,1/4) 
  y2=rexp(nreps,1/4) 
  w1=y1 
  w2 = ifelse(x1+y1>x2,x1+y1-x2+y2,y2) 
  z=array(0,c(nreps,2)) 
  z[,1] = w1 
  z[,2] = w2 
  z 
}

Я хотел бы просмотреть выходные данные и выбрать случаи, для которых w1 <1, а затем нарисуйте гистограмму значений w2 для этих случаев. Я пробовал это: </p>

z = gentimes(10000)
for (i in 1:10000)
{
if (z[1,i]<1)
{ 
new_array=array(0,c(10000,2))
new_array[i]=c(z[1,i],z[2,i])
}
new_array
}

Я новичок в R и пытаюсь создать новый массив новых дел. Очень благодарен за любую помощь:)

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Я преобразовал матрицу в фрейм данных для более легкой фильтрации / запросов. Но тогда я просто отфильтрую 1-й столбец, а затем суммирую 2-й

dat <- gentimes(100000)

dat <- as.data.frame(dat)
dat_filtered <- dat[dat$V1 > 1, ]
hist(dat_filtered$V2)

enter image description here

0 голосов
/ 03 апреля 2020
library(ggplot2)
df <- as.data.frame(gentimes(10000))
df_filtered <- df[df$V1 < 1, ]
ggplot(df_filtered, aes(x=V2)) + geom_histogram()

enter image description here

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