【发布时间】:2012-09-10 19:57:43
【问题描述】:
如果我的术语有误,请纠正我,因为在这个问题上,我不太确定我在处理元素、对象、列表方面的内容。我只知道它不是数据框。
使用来自prepksel {adehabitatHS} 的示例,我正在尝试修改我自己的数据以适应他们的包。在他们的示例数据上运行这个命令会创建一个对象?称为 x 这是一个包含 3 个部分的列表?元素?给它。
示例数据代码:
library(adehabitatHS)
data(puechabonsp)
locs <- puechabonsp$relocs
map <- puechabonsp$map
pc <- mcp(locs[,"Name"])
hr <- hr.rast(pc, map)
cp <- count.points(locs[,"Name"], map)
x <- prepksel(map, hr, cp)
查看 x 的结构,它是一个由 3 个元素组成的列表,称为制表符、权重和因子
str(x)
List of 3
$ tab :'data.frame': 191 obs. of 4 variables:
..$ Elevation : num [1:191] 141 140 170 160 152 121 104 102 106 103 ...
..$ Aspect : num [1:191] 4 4 4 1 1 1 1 1 4 4 ...
..$ Slope : num [1:191] 20.9 18 17 24 23.9 ...
..$ Herbaceous: num [1:191] 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 ...
$ weight: num [1:191] 1 1 1 1 1 2 2 4 0 1 ...
$ factor: Factor w/ 4 levels "Brock","Calou",..: 1 1 1 1 1 1 1 1 1 1 ...
对于我的数据,我将创建多个"x" 列表并希望合并每个段内的数据。因此,我为 2007、2008 和 2009 年创建了一个 "x"。现在,我想将 08 的 "tab" 元素附加到 07,然后将 09 附加到 07/08。并对列表"x" 的"weight" 和"factor" 元素执行相同操作。你如何绑定这些数据?我考虑过在列表的每个段上使用unlist,然后附加然后加入每个段的年度数据,然后将三个段重新加入一个列表。但这很麻烦,而且似乎效率很低。
我知道这不是它的工作方式,但在我的脑海中这是我应该做的:
newlist<-append(x07$tab, x08$tab, x09$tab)
newlist<-append(x07$weight, x08$weight, x09$weight)
newlist<-append(x07$factor, x08$factor, x09$factor)
也许是rbind? do.call("rbind", lapply(....uh...stuck
【问题讨论】:
-
“我将创建多个 x 列表并希望将列表中的每个元素附加到 1 个列表中。”嗯?
-
感谢您提供
str(x)。dput(x)也会非常有用。 -
@BlueMagister 我没有放 dput(x) 因为我提供的代码的第一部分任何人都可以运行,只需复制和粘贴即可。我认为它可以避免创建长消息,因为我更关心的是如何将新数据加入列表中的不同部分。
-
@joran 为不应该出现的内容道歉。我还改写了措辞并试图使我所说的更清楚。