R фрейм данных остается пустым

#r #csv #dataframe

#r #csv #фрейм данных

Вопрос:

Для проекта мне нужно импортировать файл данных (CSV) в gephi, чтобы визуализировать его. Gephi запрашивает входные данные с источником и целью в соотношении 1: 1. Мой файл CSV состоит примерно из 1000 строк с идентификатором в первом столбце. В последующих столбцах содержится x количество целевых объектов, в зависимости от источника. Таким образом, исходный и целевой данные находятся в соотношении 1: x, поэтому я попытался использовать R для перевода одного из фреймов данных в другой. Создание более длинного фрейма данных всего с двумя столбцами и дублированием в первом идентификаторе в качестве значения исходного столбца с новой строкой в фрейме данных для каждого целевого объекта, подключенного к идентификатору.

Моя проблема на данный момент заключается в том, что фрейм данных gephilijst не заполняется после выполнения этих строк кода. Может кто-нибудь, пожалуйста, сказать мне, что не так с кодом? Спасибо!

 netwerk <- read.csv("P:\Documents\uni\dataMiningR.csv", header  = TRUE)  

#create the new data frame
gephilijst <- data.frame()

#declare variables
i <- 1
t <- 2
rowcount <- 1


#for every row in the dataframe
if(i <= nrow(netwerk) ){


   while(is.null(netwerk[i,t]) == FALSE){
       #Give cell Ai the value of the person id
       gephilijst[rowcount, 1 ] <- netwerk[i, 1]

       #Give the cell Bi the value of the next contact
       gephilijst[rowcount, 2 ] <- netwerk[i, t]

       #raise the numbers to check if there will be a new contact
       t <- t   1 
       rowcount <- rowcount   1
}

#reset numbers to go to the next line in the original csv
t <- 2
i <- i   1 
}
  

Входные данные в netwerk выглядят следующим образом
1 2 3 4 5
2 3 4 5 6

Желаемый результат был бы таким: 1 2 1 3 1 4 1 5 2 3 2 4 2 5 2 6

Этот пример упрощен

Комментарии:

1. Не могли бы вы предоставить образец netwerk и соответствующий желаемый результат, который был бы в gephilijst?

2. Конечно, в комментариях это довольно плохо. Итак, я отредактирую вопрос

3. Я не понимаю ваш пример, из того, что вы сказали, что netwerk выглядит как вектор или фрейм данных в 1 столбец, но у вас есть netwerk [i, t] в вашем цикле. Не могли бы вы уточнить?

Ответ №1:

Я пытаюсь воспроизвести вашу проблему с помощью кода вниз. Но я не нахожу проблему, которую вы описываете: объект gephilijst содержит что-то.

 netwerk <- data.frame(ID = c(1:25), source=runif(25,1,100), target=runif(25,1,100) )


#create the new data frame
gephilijst <- data.frame()

#declare variables
i <- 1
t <- 2
rowcount <- 1


#for every row in the dataframe
if(i <= nrow(netwerk) ){


  while(is.null(netwerk[i,t]) == FALSE){
    #Give cell Ai the value of the person id
    gephilijst[rowcount, 1 ] <- netwerk[i, 1]

    #Give the cell Bi the value of the next contact
    gephilijst[rowcount, 2 ] <- netwerk[i, t]

    #raise the numbers to check if there will be a new contact
    t <- t   1 
    rowcount <- rowcount   1
  }

  #reset numbers to go to the next line in the original csv
  t <- 2
  i <- i   1 
}


> gephilijst
  V1       V2
1  1 40.37779
2  1 78.67263