#r #list #sampling
#r #Список #выборка
Вопрос:
Я пытаюсь использовать случайно выбранную букву из nbMtx $ R для выборки из одного из других компонентов списка, но я получаю сообщение об ошибке, в котором говорится, что у меня неверное число вероятностей при моей второй попытке выборки. Я вызвал length(nbMtx[start]), и он возвращает [3], поэтому я не уверен, почему мой вектор вероятности visit_prob (который имеет 3 значения) не работает. Я также попытался заменить аргумент prob во втором примере на c(.3, .3, .3) на всякий случай, и это также не сработало.
set.seed(514) #seed in reference to the class’ code
nbMtx <- list() #Rory’s neighborhood connections
nbMtx$R <- c("L","P","D","J")
nbMtx$L <- c("P","R","D")
nbMtx$P <- c("L","R","J")
nbMtx$D <- c("L","R","J")
nbMtx$J <- c("P","R","D")
original_prob<- rep.int(.25, 4)
visit_prob<- rep.int((1/3), 3)
start<- sample(nbMtx$R, 1, replace=FALSE, prob=original_prob)
visit<- sample(nbMtx[start], 1, replace=FALSE, prob=visit_prob)
Error in sample.int(length(x), size, replace, prob) :
incorrect number of probabilities
Ответ №1:
Просматривая назначение to start
, мы видим
start
# [1] "L"
Рассмотрение следующего присваивания visit
, которое вызывает ошибку, первый аргумент
nbMtx[start]
# $L
# [1] "P" "R" "D"
length(nbMtx[start])
# [1] 1
И вот в чем проблема. Вместо этого используйте [[
, и вы получите вектор ожидаемой длины:
nbMtx[[start]]
# [1] "P" "R" "D"
visit <- sample(nbMtx[[start]], 1, replace=FALSE, prob=visit_prob)
visit
# [1] "P"
Комментарии:
1. Такое простое решение, и оно отлично сработало… Спасибо!