在 R 中动态地将一个数据帧附加到另一个数据帧上
append one dataframe over another dynamically in R
我有数据框 (dataframexml),它有 3 列-名称、路径和 URL 以及 URL 上的多个 rows.Based,我正在解析 XML在 R 中并使用 getdataframe() function.So 创建数据帧,基于 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
}
这是在循环中执行此操作的一种方法。基本上,您在循环之前创建一个空对象,它将用于存储结果。然后,在循环中,使用 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
我有数据框 (dataframexml),它有 3 列-名称、路径和 URL 以及 URL 上的多个 rows.Based,我正在解析 XML在 R 中并使用 getdataframe() function.So 创建数据帧,基于 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
}
这是在循环中执行此操作的一种方法。基本上,您在循环之前创建一个空对象,它将用于存储结果。然后,在循环中,使用 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