我无法将某些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;
的长度相同我认为这是输出的基本内容,但我无法弄清楚问题。任何帮助都将非常感激。
答案 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
。