Как сделать цикл с помощью R - PullRequest
0 голосов
/ 09 мая 2018

Мне нужно создать цикл, но я не знаю, как заказать R, что я хочу сделать.

for(i in 1:nrow(File1))
  for(j in 1:ncol(File2)){
    if [(x(i,1)==(cd(1,j)))] # Until here I think it is ok
             THEN            # I don't know what is the command for THEN in R
      for (k in File3) #I have to take all the data appearing in File3

Output (k,1)= K # I don't know what is the command to order the output in R
Output (k,2)= cd(1,j)
Output (k,3)= x(i,2)
Output (k,4)= x(i,3)
Output (k,5)= x(i,4)
Output (k,6)= cd(1,j)

Как мне закончить цикл?

Заранее спасибо, я немного запутался

1 Ответ

0 голосов
/ 09 мая 2018

Так что это базовый цикл for, который просто печатает значения.

data <- cbind(1:10); 
for (i in 1:nrow(data)) {
  print(i)
}

Если вы хотите сохранить выходные данные, вам нужно инициализировать вектор / список / матрицу и т. Д.1004 *

output <- vector()
for (i in 1:nrow(data)) {
  k[i] <- i
}
k

И небольшой пример для вложенных циклов:

data <- cbind(1:5); 
data1 <- cbind(15:20)
data2 <- cbind(25:30)
for (i in 1:nrow(data)) {
  print(paste("FOR 1: ", i))
  for (j in 1:nrow(data1)) {
    print(paste("FOR 2: ", j))
    for (k in 1:nrow(data2)) {
      cat(paste("FOR 3: ", k, "\n"))
    }
  }
}

Но, как уже упоминалось, вам, вероятно, будет лучше использовать функцию «apply» (apply, sapply, lapply,так далее).Прочтите этот пост: Apply-Family

Или используйте пакет dplyr с оператором pipe (%>%).

Чтобы включить некоторые if / else-synthax вцикл:

data <- cbind(1:5); 
data1 <- cbind(15:20)
data2 <- cbind(25:30)

for (i in 1:nrow(data)) {
  if (i == 1) {
    print("i is 1")
  } else {
    print("i is not 1")
  }
  for (j in 1:nrow(data1)) {
    print(paste("FOR 2: ", j))
    for (k in 1:nrow(data2)) {
      cat(paste("FOR 3: ", k, "\n"))
    }
  }
}

В первом цикле я спрашиваю, равен ли я 1. Если да, используется первый оператор печати («i is 1»), в противном случае используется второй («iне 1 ").

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