2017-07-26 113 views
0

我無法將某些R代碼的結果輸出到數據框中,以便最終導出爲CSV。我對R很新,所以我不確定究竟是什麼錯誤。將結果輸出到數據框中

我有這個輸入數據集,名爲 「ip_test」:

ip  ip_end country_name region_name city_name 
702388992 702388994 US   West  LA 

我然後運行該代碼:

g = 1 
ip = as.numeric(ip_test[g,1]) 
df <- for(g in 1:as.numeric(nrow(ip_test))) 
{ for(ip in as.numeric(ip_test[g,1]):as.numeric(ip_test[g,2])) 
    { print(cbind(ip_address=ip, 
      country_name = paste(ip_test[g,3], collapse=" "), 
      region_name = paste(ip_test[g,4], collapse=" "), 
      city_name = paste(ip_test[g,5], collapse=" "))) 
    } 
} 

這是輸出的結果:

 ip_address country_name region_name city_name 
[1,] "702388992" "US" "West" "LA" 
    ip_address country_name region_name city_name 
[1,] "702388993" "US" "West" "LA" 
    ip_address country_name region_name city_name 
[1,] "702388994" "US" "West" "LA" 

我遇到的問題是數據幀「df」沒有被填充任何數據,它仍然是「NULL(空)」。由於輸出的數據是我想要的,我不確定問題是什麼。我研究了矩陣與數據幀問題,輸出爲ldply,as.data.frame,R list to data frame。在每一位代碼中,我都遇到了同樣的問題:數據幀沒有輸出。我嘗試了reshape2庫中的「熔化」功能,每Multidimensional array into data frame創建了一個數據幀1列寬11行,數字爲0-10,此錯誤: 「名稱(對象)中的錯誤< - nm: 'name'屬性1必須與向量[0]的長度相同「

我在想這是基本的輸出,但我無法弄清楚這個問題。任何幫助將非常感激。

+0

隨着你計算的每一個新行,你都需要'將它'綁定到df。你能不能給它一個... – cephalopod

+0

請顯示一些數據,包括* ip_test *對象。 – Parfait

+0

@cephalopod rbind是要走的路,我只是不熟悉它。我沒有意識到「印刷」和「混搭」之間的區別。 –

回答

0

您的代碼存在的問題是您沒有將新行分配給data.frame - 您只是在打印它們。你想要的是rbind

> ip_list=NULL 
> for(i in ip_test$ip:ip_test$ip_end){ 
+ new_row=data.frame("ip_address"=i, "country_name"="US", "region_name"="West", "city_name"="LA") 
+ ip_list=rbind(ip_list, new_row) 
+ } 
> ip_list 
    ip_address country_name region_name city_name 
1 702388992   US  West  LA 
2 702388993   US  West  LA 
3 702388994   US  West  LA 

注意for循環一般是一個糟糕的方式做事R.你可能會更好初始化你需要的列數的空數據幀,然後分配ip_address=start:end

+0

它的工作!感謝@Matt,我用你的例子修改了代碼,而且事情正在完善。我不得不這樣初始化ip_list數據幀: ip_list < - data.frame(ip_address = integer(),country_name = character(),region_name = character(),city_name = character(),stringsAsFactors = FALSE) –

+0

有關此超出R預期功能的範圍,IP的完整列表包含約300萬行。我確信有一個更好的工具可以做到這一點,但由於我的技能有限,我對R比其他語言更加熟悉。再次感謝! –

相關問題