У меня есть некоторый опыт работы с Python и NumPy, но я никогда не использовал R раньше. Я пытаюсь помочь моей жене с ее проектом R, поскольку, хотя она гораздо лучше разбирается в статистике, у нее мало опыта программирования. Я нахожу синтаксис и документацию R очень запутанными.
Первоначально мы хотели сделать цикл по большому объему data.frame, выполнить ряд пространственных вычислений, включающих предыдущие и последующие записи, небольшую проверку и некоторые проверки качества данных и создать новый объект с данными. Затем мы получим эти новые данные в ГИС
EDIT:
Просто чтобы прояснить, вычисления в этом примере - просто заполнитель, и они не похожи на реальные вычисления, которые мне нужно было сделать.
Первоначально я пытался что-то вроде этого:
> result = list()
> for (i in 1:5) {
+ #Calculate some dummy data. The actual calculations are much more involved
+ param1 = i * 1.1
+ param2 = i * 5.3
+ param3 = i + a_value
+ # Now append these calculated values to some sort of object
+ sample = list(param1=param1,param2=param2,param3=param3)
+ result <- rbind(result,sample)
+ }
> print(result)
param1 param2 param3
sample 1.1 5.3 12
sample 2.2 10.6 13
sample 3.3 15.9 14
sample 4.4 21.2 15
sample 5.5 26.5 16
Столбец "sample" кажется ненужным, ну да ладно, выглядит хорошо. Теперь для ссылки на один столбец ...
> result$param2
NULL
??? Я пытался избавиться от 'sample' с помощью:
+ result <- rbind(result,list(param1=param1,param2=param2,param3=param3))
>
param1 param2 param3
[1,] 1.1 5.3 12
[2,] 2.2 10.6 13
[3,] 3.3 15.9 14
[4,] 4.4 21.2 15
[5,] 5.5 26.5 16
> result$param2
NULL
Возможно, этот фрейм данных будет работать. Я изменил первую строку на:
result = data.frame()
>
param1 param2 param3
2 1.1 5.3 12
21 2.2 10.6 13
3 3.3 15.9 14
4 4.4 21.2 15
5 5.5 26.5 16
> result$param2 # One column
[1] 5.3 10.6 15.9 21.2 26.5
> result[2,] #One row
param1 param2 param3
21 2.2 10.6 13
> result[3,]$param3 # Single value
[1] 14
Так что это работает, но я не уверен, что такое 21 (номер строки?). Если у меня есть еще ряды, 21-й ряд - «211».
Может кто-нибудь сказать мне, почему первый случай не сработал, что такое «21», и есть ли лучший способ сделать это. Многое из того, что я прочитал, указывает на то, что циклы в R - признак того, что вы не знаете, что делаете, но кривая изучения альтернатив кажется крутой. Именно поэтому сценарий занимает удивительно много времени для запуска даже на быстрой машине.