1

質問には 2 つの部分があります。

  1. ペアになったデータを格納できるRのデータ構造は次のとおりです。

    0:0  
    0.5:10  
    1:20  
    

    (パイソン辞書{[0]:0, [0.5]:10, [1]:20})

    1つのライナーでそれを開始する方法は?つまり、このデータ構造で結合seq(0,1,by=0.5) しますseq(0,10,by=5)

  2. リストに追加したと仮定すると0.25、隣接ノードの加重平均がデータ セットに (自動的に) 表示されます。つまり、要素0.25:5とペア セットは次のようになります。

    0:0
    0.25:5  
    0.5:10  
    1:20  
    

    要素を追加する場合は、追加する要素と0.3ペアにする必要があります。5+(10-5)*(0.3-0.25)/(0.5-0.25)=60.3:6

この機能を配置できる S4 または参照クラス クラス モデルを使用してクラスを作成するにはどうすればよいですか?

4

2 に答える 2

1

あなたが何を得ているのかよくわかりませんが、おそらくパッケージにhashはあなたが望むものが含まれているかもしれません

library(hash)
h<-hash(keys=seq(0,1,by=0.5),values=seq(0,10,by=5))
h[['0.25']]<-2.5

おそらくあなたの質問の最初の部分を扱っています。http://cran.r-project.org/web/packages/hash/hash.pdfは、2番目のヘルプをほのめかすかもしれません。

リストを使った同様の構造

lst<-list()
lst<-seq(0,10,5)
names(lst)<-seq(0,1,0.5)
> lst['0.5']
0.5 
  5 
lst['0.25']<-2.5

2番目の部分では、ハッシュ/リストを新しい値で更新する単純な関数を作成できます。

于 2012-07-05T17:26:01.770 に答える
0

2 列の data.frame が適切と思われます。

xy <- data.frame(x = seq(0, 1, by = 0.5), y = seq(0, 20, by = 10))
xy
#     x  y
# 1 0.0  0
# 2 0.5 10
# 3 1.0 20

次に、あなたがやろうとしているのは、approx関数を使用して達成できる線形補間です。例えば:

approx(xy$x, xy$y, xout = 0.3)
# $x
# [1] 0.3
# 
# $y
# [1] 6

その結果を data.frame に追加する場合は、次のようにします。

xy <- as.data.frame(approx(xy$x, xy$y, xout = sort(c(xy$x, 0.3))))
xy
#     x  y
# 1 0.0  0
# 2 0.3  6
# 3 0.5 10
# 4 1.0 20

これは、特に一度に 1 つずつポイントを追加する場合は、少し高価です。結果はそれらを追加する順序に依存しないため、代わりにすべてのポイントを一度に追加できます。

add.points <- c(0.25, 0.3)
xy <- as.data.frame(approx(xy$x, xy$y, xout = sort(c(xy$x, add.points))))
xy
#      x  y
# 1 0.00  0
# 2 0.25  5
# 3 0.30  6
# 4 0.50 10
# 5 1.00 20
于 2012-07-08T19:40:45.230 に答える