내가 F 값 (I 달러 '나'X) 각 각 간격의 값에서 발견을 계산할실제 값
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 $ 'i'실제 값은 각 간격에서 f (I $ 'i', 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 <- 0; 나는 [[i]]'. 이것은 I $ '0' '을하는 것과 같지만 좀 덜 이상하고'i'는 변수가 될 수 있습니다. –
'0 : length (I) -1'은 약간 다른 주석으로'0 : length (I) -1' ='[1] -1 0 1 2'의 출력을 기대하지 않습니다. R이 의도 한 조작 순서를 알 수 있도록 대괄호를 써야합니다.'0 : (length (I) -1)'='[1] 0 1 2' – huon