2

私の用語が間違っている場合は訂正してください。この質問では、要素、オブジェクト、リストに関して何を扱っているのかよくわかりません。データフレームではないことを知っています。の例を使用しprepksel {adehabitatHS}て、パッケージに収まるように自分のデータを変更しようとしています。サンプルデータに対してこのコマンドを実行すると、オブジェクトが作成されますか?3つのセクションからなるリストであるxと呼ばれますか?要素?それに。データコードの例:

 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年のを作成しました。次に、 08から07、次に09から07/08"x"の要素を追加します。このリストの要素と要素"tab"についても同じようにします。そのデータをどのようにバインドしますか?リストの各セグメントで使用し、各セグメントの年間データを追加して結合し、3つのセグメントを1つのリストに再結合することを考えました。しかし、これは面倒で、かなり非効率的であるように見えました。 "weight""factor""x"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)

多分rbinddo.call("rbind", lapply(....uh...stuck

4

1 に答える 1

1

appendベクトルとリストで機能しますが、データフレームに必要な出力が得られないため、リスト内の要素(およびそれらはリストです)はさまざまなタイプです。何かのようなもの

tocomb <- list(x07,x08,x09)
newlist <- list(
  tab = do.call("rbind",lapply(tocomb,function(x) x$tab)), 
  weight = c(lapply(tocomb,function(x) x$weight),recursive=TRUE), 
  factor = c(lapply(tocomb,function(x) x$factor),recursive=TRUE)
)

レベルが異なる場合は、ファクターに注意する必要がある場合があります。たとえばas.character、ファクターをに戻す前に、ファクターに注意する必要がありas.factorます。

これはテストされていないため、組み立てが必要になる場合があります。私はRウィザードではないので、これが最善の答えではないかもしれません。

于 2012-09-18T15:28:28.343 に答える