У меня есть несколько факторов, разделяющих мои данные.
По одному фактору (uniqueGroup
) я хотел бы поднастроить свои данные, по другому коэффициенту (distance
) я хочу сначала классифицировать свои данные по «порогу перемещения», а затем проверить статистическую разницу между группами.
Я создал функцию movThreshold
, чтобы классифицировать мои данные и проверить ее по wilcox.test
. Чтобы варьировать различные пороговые значения, я просто запускаю
lapply(th.list, # list of thresholds
movThreshold, # my function
tab = tab, # original data
dependent = "infGrad") # dependent variable
Теперь я понял, что на самом деле мне нужно сначала поднастроить мои данные на uniqueGroup
, а затем изменить пороговое значение . Но я не уверен, как написать это в моем lapply
коде?
Мои фиктивные данные:
set.seed(10)
infGrad <- c(rnorm(20, mean=14, sd=8),
rnorm(20, mean=13, sd=5),
rnorm(20, mean=8, sd=2),
rnorm(20, mean=7, sd=1))
distance <- rep(c(1:4), each = 20)
uniqueGroup <- rep(c("x", "y"), 40)
tab<-data.frame(infGrad, distance, uniqueGroup)
# Create moving threshold function &
# test for original data
# ============================================
movThreshold <- function(th, tab, dependent, ...) {
# Classify data
tab$group<- ifelse(tab$distance < th, "a", "b")
# Calculate wincoxon test - as I have only two groups
test<-wilcox.test(tab[[dependent]] ~ as.factor(group), # specify column name
data = tab)
# Put results in a vector
c(th, unique(tab$uniqueGroup), dependent, uniqueGroup, round(test$p.value, 3))
}
# Define two vectors to run through
# unique group
gr.list<-unique(tab$uniqueGroup)
# unique threshold
th.list<-c(2,3,4)
Как запустить lapply
по двум спискам ??
lapply(c(th.list,gr.list), # iterate over two vectors, DOES not work!!
movThreshold,
tab = tab,
dependent = "infGrad")
В моем предыдущем вопросе ( тест Крускала-Уоллиса: создать функцию lapply для подмножества data.frame? ) я научился перебирать отдельные подмножества в таблице:
lapply(split(tab, df$uniqueGroup), movThreshold})
Но как перебрать подмножества и пороги сразу?