Я прохожу через последовательность от 1 до 1,9 с шагом 0,1, чтобы найти эти значащие позиции в моих данных (datapositions1). Однако при прохождении цикла значение «1.7» не подбирается, хотя оно определенно находится в данных. Однако, если я использую последовательность (1, 1.7, by = 0.1), то она снова забирает «1.7» & незнакомца, если я использую последовательность (1.1, 1.9, = 0,1), тогда она не поднимает «1.7 "или" 1,8 ".В R, используя для цикла seq(), получая странные результаты/поведение
Snippit моих данных:
name position value
Name A 1.8 458.77011494
Name A 3.3 352.10734463
Name A 1.7 167.26923077
Name A 1.5 14.19756839
Name A 3.0 96.47292419
Name A 1.9 636.25490196
Name A 1.7 1.81479312
Name A 1.2 130.94444444
Name A 1.6 43.66501241
Name B 1.2 86.40421456
Name B 1.1 48.13294798
Name B 1.0 3.28143556
Name C 1.7 460.53846154
Name C 1.8 501.41545894
Name C 1.0 112.03095752
Name C 1.7 216.39130435
Функция Я использую:
Average= function(){
df = data.frame()
for (i in seq(1, 1.9, 0.1)){
#print(i)
#b = datapositions1[c(datapositions1$position == 1.7),]
#print(b)
p = datapositions1[c(datapositions1$position == i),]
print(p)
df = rbind(df, data.frame(p))
}
df
}
Average()
Кроме того, в приведенном выше, где я использовал код «б» она всегда возвращает правильные данные при использовании " 1.7 ", тогда как" p ", используя" i ", теряет данные" 1.7 ".
Это результат «p» потери «1.7» данных.
497 Name A 1.6 60.997704
543 Name C 1.6 146.058824
544 Name C 1.6 163.133739
[1] 1.7
[1] name position value
<0 rows> (or 0-length row.names)
[1] 1.8
name position value
42 Name A 1.8 20.614468
43 Name B 1.8 49.724638
89 Name A 1.8 101.725367
Любой посоветуйте пожалуйста :)
Вероятно, проблема с точностью с плавающей точкой. – joran