我有数据帧(dataframexml),它有3个列 - 名称,路径和URL以及多行。基于URL,我在R中解析XML并使用getdataframe()函数创建数据帧。基于URL的数量,将生成许多数据帧。 (所有数据帧都有相同的列)
现在我需要为每个数据帧添加一个新列,该数据帧将在所有行中包含数据帧名称,并在另一个数据帧上附加动态创建主数据帧。 这是我被卡住的部分。寻求一些指导。
for (i in 1:nrow(dataframexml)){
dataURL<- dataframexml[i,3]
dataURL.response<-GET(dataURL,authenticate("string","xxxxx"))
assign(paste("df",substr(dataframexml[i,3],85,100),sep=""),
getdataframe(dataURL.response))
# getdataframe() = A function to create dataframe from the URL
# parts stuck
# "1st <- create a new column which will have dataframe name in all rows"
# "2nd" <- append one dataframe over another and create a master dataframe
print(paste("df",substr(dataframexml[i,3],85,100),sep=""))
# For Testing
}
答案 0 :(得分:0)
这是在循环中执行此操作的一种方法。基本上,您在循环之前创建一个空对象,它将用于存储结果。然后,在循环中,使用cbind
添加名称,最后使用rbind
将所有结果添加到另一个结果之上。
dataframexml <- data.frame(name=c("a","b"),url=c("http1","http2"))
res <- NULL #create empty object
for (i in 1:nrow(dataframexml)){
name_loop <- dataframexml[i,"name"]
getdataframe_result <- data.frame(col1=runif(2),col2=runif(2))
getdataframe_result_with_name <- cbind(name_loop,getdataframe_result)
res <- rbind(res,getdataframe_result_with_name)
}
> res
name_loop col1 col2
1 a 0.267059 0.4765398
2 a 0.730072 0.4079391
3 b 0.131630 0.7102743
4 b 0.678059 0.0624137