Как упорядочить по индексу в цикле с вектором столбцов данных (datatable)? - PullRequest
0 голосов
/ 15 мая 2019

Мой код работает хорошо, когда я ставлю имя столбца. Но когда я хочу создать цикл с вектором имен столбцов и упорядочить фрейм данных путем индексации столбца, это не работает должным образом.

Код ниже работает хорошо:

indexROW <- round(nrow(Home_strategy_Yes) * 0.2)
Home_strategy_Yes_reordered <- Home_strategy_Yes[order(HT.av.points)]
Home_strategy_Yes_reordered$ID <- seq.int(nrow(Home_strategy_Yes_reordered))
value <- Home_strategy_Yes_reordered[indexROW,HT.av.points]
percentageTOfilter <- min(Home_strategy_Yes_reordered[HT.av.points == value,ID]) -1
valueTOfilter <- Home_strategy_Yes_reordered[percentageTOfilter,HT.av.points]

Проблема при цикле с вектором colnames

columns_setA <- c("HT.av.points","HT_av.PointsTotal")
for (i in 1:length(columns_setA)){
  indexROW <- round(nrow(Home_strategy_Yes) * 0.2)
  Home_strategy_Yes_reordered <- Home_strategy_Yes[order(columns_setA[i])]
  Home_strategy_Yes_reordered$ID <- seq.int(nrow(Home_strategy_Yes_reordered))
  value <- Home_strategy_Yes_reordered[indexROW,columns_setA[i]]
  percentageTOfilter <- min(Home_strategy_Yes_reordered[columns_setA[i] == value,ID]) -1
  valueTOfilter <- Home_strategy_Yes_reordered[percentageTOfilter,columns_setA[i]]

}  

Функция заказа не работает внутри цикла, как вне цикла.

Ответы [ 2 ]

1 голос
/ 15 мая 2019

i не оценивается.Нам может понадобиться либо get, либо преобразование в symbol и eval uate внутри цикла

...
percentageTOfilter <- min(Home_strategy_Yes_reordered[get(i) == value,ID]) -1
...
0 голосов
/ 15 мая 2019

Добавление функции заказа get () работает как положено.

for (i in 1:length(columns_setA)){
  indexROW <- round(nrow(Home_strategy_Yes) * 0.2)
  Home_strategy_Yes_reordered <- Home_strategy_Yes[order(get(columns_setA[i]))]
  Home_strategy_Yes_reordered$ID <- seq.int(nrow(Home_strategy_Yes_reordered))
  value <- Home_strategy_Yes_reordered[indexROW,get(columns_setA[i])]
  percentageTOfilter <- min(Home_strategy_Yes_reordered[get(columns_setA[i]) == value,ID]) -1
  valueTOfilter <- Home_strategy_Yes_reordered[percentageTOfilter,get(columns_setA[i])]

}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...