因此,使用for循环,我能够将r中的110万行数据集分成110个表,每个表大约10,000行,希望能够更好地处理数据。我现在想要运行另一个for循环,将每个表中的值分配给不同的数据帧名称。
我的表名是:
Pom_1
Pom_2
Pom_3
...
Pom_110
我想要做的是创建一个类似于以下的for循环:
for (i in 1:110)
{
Pom <- read.table(paste("Pom",i,sep = "_"))
for (j in 1:nrows(Pom))
{do something}
}
所以我想遍历数组并将每个Pom表的值分配给“Pom”,这样我就可以在Pom的每个子部分运行for循环。这个问题是read.table函数似乎不是正确的。有什么想法吗?
答案 0 :(得分:0)
您能举一个更具体的例子说明您想要对每个数据帧做什么吗?你应该尽可能避免使用内部循环,如果你真的需要查看?apply
nrow
代替nrows
答案 1 :(得分:0)
这是使用示例data.frame
的通用解决方案。您正在寻找的功能是assign
,请查看它的帮助页面:
Pom = data.frame(x = rnorm(30)) #original data.frame
n.tables = 3 # number of new data.frames you want to creat
Pom.names = paste("Pom",1:3,sep="") # name of all new data.frames
breaks = nrow(Pom)/n.tables * 0:n.tables # breaks of the original data.frame
for (i in 1:n.tables) {
rows = (breaks[i]+1):breaks[i+1] # which rows from Pom are going to be assign to the new data.frame?
assign(Pom.names[i],Pom[rows,]) # create new data.frame
}
ls()
[1] "breaks" "i" "n.tables" "Pom" "Pom.names" "Pom1"
[7] "Pom2" "Pom3" "rows"
答案 2 :(得分:0)
我愿意打赌你的表调用的问题是你没有指定文件扩展名(假设Pom_1 - Pom_110是你工作目录中的文件,我认为它们是因为你正在使用read.table )。
您可以通过以下
修复它fileExtension<-".xls" #specify your extension, I assume xls
for (i in 1:110)
{
tablename<-paste("Pom",i,sep = "_")
Pom <- read.table(paste(tablename, fileExtension, sep=""))
for (j in 1:nrows(Pom))
{do something}
}
当然,这假设了一些关于如何设置问题中的所有内容的事情,但这是我根据您的描述和代码进行的最佳猜测