0

我有一个名为rain 的大型data.frame,其中包含在不同时间(人口普查)的不同地块中测量的许多物种的信息,我想从中提取信息。这个数据框有很多列,在 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上!

干杯!!!

4

1 回答 1

1

您在评论中的澄清有所帮助,但可重复的示例总是更好。让我们从头开始:

dataF2<- data.frame(nrow= nrow (rain), ncol = ncol (rain))

这是错误的。我认为您正在尝试创建一个与您的数据框具有相同尺寸的空数据框rain。如果你检查dataF2一下,你会发现这与你对这条线所做的相去甚远。如果您阅读该函数的文档,?data.frame就会清楚地知道没有调用参数nrowncol。你可能想要的是这样的:

dataF2 <- rain
dataF2[] <- NA

在循环内部for,您正在覆盖整个数据框,因为......您正在覆盖整个数据框。

dataF2<- rain[Plot.Code==idx3[i,1] & Census.No==idx3[i,2],]

这分配了一些东西dataF2,完全替换它。如果您只想分配给您需要分配给该特定行单行:dataF2

dataF2[i,] <- rain[Plot.Code==idx3[i,1] & Census.No==idx3[i,2],]

我不能绝对保证这会正常工作,因为您没有提供足够详细的示例,所以我不确定当您在i. 但这是基本思想。

于 2013-05-15T14:22:18.283 回答