将结果输出到数据框

时间:2017-07-26 20:06:23

标签: r csv matrix dataframe output

我无法将某些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"

我遇到的问题是数据框&#34; df&#34;没有填充任何数据,它仍然是&#34; NULL(空)&#34;。由于输出的数据是我想要的,因此我不确定究竟是什么问题。我查看了矩阵与数据框架问题,输出上的rbind,ldply,as.data.frame,R list to data frame。我在每一位代码上都没有输出到数据帧的相同问题。我试过&#34;融化&#34;每个Multidimensional array into data frame在reshape2库中运行,它创建了一个1列宽,11行长,数字为0-10的数据帧,这个错误: &#34;名称(对象)中的错误&lt; - nm:   &#39;名称&#39;属性1的长度必须与向量[0]和#34;

的长度相同

我认为这是输出的基本内容,但我无法弄清楚问题。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

您的代码存在的问题是您没有将新行分配给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