2017-07-26 10 views
0

最終的にCSVに書き出すために、一部のRコードの結果をデータフレームに出力するのに問題があります。私は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がありました。私はコードのすべてのビットでデータフレームに出力がないという同じ問題が発生しています。私はMultidimensional array into data frameごとにreshape2ライブラリの "melt"関数を試しました。これはデータフレーム1列の幅が11行で、数字は0-10で、このエラーは "エラー(名前)(オブジェクト)< - nm: '名前'属性1は、ベクトル[0]と同じ長さでなければなりません "

私は出力と何か基本的だと思っていますが、私は問題を理解することができません。どんな助けでも大歓迎です。

+0

あなたが計算するたびにdfに 'rbind'する必要があります。 – cephalopod

+0

* ip_test *オブジェクトを含むいくつかのデータを表示してください。 – Parfait

+0

@cephalopod rbindは行く方法でしたが、私はそれに精通していませんでした。私は "印刷"と "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

それは働いた!ありがとう@マット、私はあなたの例を使用してコードを修正し、物事は完璧に動作しています。私はip_listデータフレームをこのように初期化しなければならなかった: ip_list < - data.frame(ip_address = integer()、country_name = character()、region_name = character()、city_name = character()、stringsAsFactors = FALSE) –

+0

私は理解しているこれがRの意図する機能の範囲外であることについては、IPの完全なリストは約3百万行を含む。私はこれを行うためのより良いツールがあると確信していますが、私のスキルが限られているため制限されています。私はRを他の言語よりもよく知っています。再度、感謝します! –

関連する問題