Как использовать для l oop в r для генерации индексов переменных для вычисления математической функции - PullRequest
0 голосов
/ 15 апреля 2020

Я хотел бы рассчитать эту функцию для набора данных 37 следующим образом:

Первые данные: V1

library(trend)
Q1 <- API37[,"V1"]
mk.test(Q1)
sens.slope( Q1);


The second data is V2

Q2 <- API37[,"V2"]
mk.test(Q2)
sens.slope( Q2);



.
.
.


Q37<- API37[,"V37"]
mk.test(Q37)
sens.slope( Q37);

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

Я пытался написать это, но не получилось.

for (i in 1:37) {
Q[i] <- API37[,"V[i]"]
mk.test(Q[i])
sens.slope( Q[i]);
print (Q[i])
}

Мне нужно генерировать результаты для каждого Vi, i = 1 , 2, ..., 37 отдельно и распечатайте его в виде списка

Может ли кто-нибудь помочь, пожалуйста?

1 Ответ

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

В вашем выражении API37[,"V[i]"] часть "V[i]" никогда не будет равна "V1", "V2", et c., Пока вы увеличиваете свой счетчик i. Это просто строка символов "V[i]", остающаяся постоянной на каждой итерации. Замена этого выражения на что-то вроде API[, paste("V", i, sep = "")] должно работать.

Однако есть более эффективные способы реализовать то, что вы пытаетесь сделать. Публикация минимального рабочего примера поможет вам найти такие решения, но вот пример, использующий случайный сгенерированный поддельный набор данных:

library(trend)

### 1. Generate an example dataset:
dat <- matrix(rnorm(100), ncol = 10)
colnames(dat) <- paste0("V", 1:10)
head(dat)

### 2. Perform a MK-test for each variable:
apply(dat, MARGIN = 2, mk.test)

Вы можете адаптировать его к своему набору данных.

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