は(私は「私を」$ x)が、私はfの値を計算したい実際の値
x = c(1, 2, 3.5, 4, 6, 7.5, 8, 9, 10, 11.5, 12)
y = c(2.5, 6.5)
I = split(x, findInterval(x, y))
f = function(I$'i', x) {
d = pmax(outer(x, I$'i', "-"), 0)
colSums(d - d^2/2)
}
を想定し、各区間の各値で、その後、私は$どの見つけることができます'i'実際の値は、各区間のf(I $ 'i'、x)の最大値を持ちます。たとえば、私たちが3つの間隔を持つ場合、私の結果はxの3つの値でなければならず、f(I $ 'i'、x)は各間隔で最大です。どのように私はこれらの値を見つけることができますか? さらに、私のコードの各反復において、ベクトルyの値が変化することに言及する必要があります。
私はこのコードを書いたが、私は、各区間内の最大値の実際の値を見つけることができません。
for(i in 0:length(I)-1){
max.value = I$'i'[which.max(f(I$'i', x))]
}
と私は、このエラーました:「、I、(外側(XをPMAXで エラー - ")、0): 長さが0のベクトルを他の文字と混在させることはできません。
定義の'f'は私のためにRで動作しません、あなたはRに入っていることを確信していますか? – huon
私は 'I $' i 'は構文エラーだとはっきりと確信しています。数字「i」を文字列に変換するには、(例えば) 'i <-0;私[[i]] '。これは '$ '' 0 ''のようなものですが、ちょっと変わった見た目で、' i'を変数にすることができます。 –
少し違うように、 '0:length(I)-1'は期待通りの出力を与えません:' 0:length(I)-1' = '[1] -1 0 1 2'。 Rがあなたが意図する操作の順序を知るように、ブラケットを入れる必要があります: '0 :(長さ(I)-1)' = '[1] 0 1 2' – huon