我有一个大型数据框架,称为降雨,有许多物种的信息在不同的时间(人口普查)不同的地块中,我想从中提取信息。这个数据框有很多列,而在dataF2中我想保持相同的结构,但是我想从雨中提取倒数第二次人口普查的信息(Census.No是雨中的一个柱子)(Plot.Code是另一个)。在idx3中,我有每个情节倒数第二次人口普查的信息。
一个情节很容易做到
data1<- rain[Plot.Code==idx3[1,1] & Census.No==idx3[1,2],]
我一直在尝试为R中的循环做..但是我一直覆盖我的data.frame并且最后一个循环结束。
dataF2<- data.frame(nrow= nrow (rain), ncol = ncol (rain))
summary (dataF2)
for (i in 1:length (idx3[,1])){
dataF2<- rain[Plot.Code==idx3[i,1] & Census.No==idx3[i,2],]
}
在这里,我想从数据框中提取每个图中倒数第二次人口普查的信息(ixd3
包含每个图中倒数第二次人口普查的信息)。
我尝试了很多东西,比如:
dataF2<- data.frame(nrow= nrow (rain), ncol = ncol (rain))
for (i in 1:length (idx3[,1])){
data1<- rainfor[Plot.Code==idx3[i,1] & Census.No==idx3[i,2],]
dataF2<- rbind (data1[i])
}
但没有任何效果......我的问题是它在dataF2上保持不变!
干杯!!!
答案 0 :(得分:1)
您在评论中的澄清有所帮助,但可重复的示例总是更好。让我们从头开始:
dataF2<- data.frame(nrow= nrow (rain), ncol = ncol (rain))
这是错误的。我认为您正在尝试创建一个与数据框rain
具有相同尺寸的空数据框。如果您检查dataF2
,您会发现这与您使用此行所做的相差甚远。如果您阅读函数?data.frame
的文档,则很明显没有名为nrow
和ncol
的参数。你可能想要的是这样的:
dataF2 <- rain
dataF2[] <- NA
在for
循环中,您将覆盖整个数据框,因为......您正在覆盖整个数据框。
dataF2<- rain[Plot.Code==idx3[i,1] & Census.No==idx3[i,2],]
这会为dataF2
分配内容,完全替换它。如果您只想分配dataF2
的{em>行,则需要分配到该特定行:
dataF2[i,] <- rain[Plot.Code==idx3[i,1] & Census.No==idx3[i,2],]
我不能绝对保证这会正常工作,因为您没有提供足够详细的示例,所以当您在i
上编制索引时,我不确定所有维度是否会正确重合。但这是基本的想法。