используя lapply с датируемыми - PullRequest
0 голосов
/ 18 октября 2019

У меня проблемы с пониманием того, как использовать lapply в R. В настоящее время у меня есть данные в spotfire, называемые dt. Я пытаюсь создать список в r, где ключом является значение строки.

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

for(row in 1:nrow(dt)){
    index[[toString(row)]]<-unlist(c(unlist(value)[row],' ',0,' ',Inf))
}

Может кто-нибудь помочь мне написать эту версию и объяснить, как и как ее программировать. Даже если это не сильно улучшит скорость кода, так как у меня есть несколько больших циклов for, которые я хочу преобразовать, но я хочу начать с чего-то более простого. Спасибо

Для таблицы данных вы можете использовать это

DT = data.table(
  ID = c("b","b","b","a","a","c"),
  a = 1:6,
  b = 7:12,
  c = 13:18
)

Поскольку я новичок в R, я напишу список, который я хочу, в качестве словаря Python. В конце я хочу, чтобы некоторые из них выглядели так:

{
  "1":[1,' ',0,' ',Inf],
  "2":[2,' ',0,' ',Inf],
  ...,
  "6":[3,4,' ',0,'',Inf]
}

Значения внутри массивов не имеют большого значения, просто они должны быть массивами.

1 Ответ

0 голосов
/ 18 октября 2019

Я до сих пор точно не понимаю взаимосвязь между входом DT и вашим выводом. Вы можете создать список размером, равным количеству строк в DT и содержащий векторы, аналогичные тем, которые есть в ваших выходных данных, например:

lapply(1:nrow(DT), function(x) c(x, " ", 0, " ", Inf))
# [[1]]
# [1] "1"   " "   "0"   " "   "Inf"
#
# [[2]]
# [1] "2"   " "   "0"   " "   "Inf"
#
# [[3]]
# [1] "3"   " "   "0"   " "   "Inf"
#
# [[4]]
# [1] "4"   " "   "0"   " "   "Inf"
#
# [[5]]
# [1] "5"   " "   "0"   " "   "Inf"
# 
# [[6]]
# [1] "6"   " "   "0"   " "   "Inf"

Я думаю, что это может быть похоже на словарь Python,Атрибут names этого списка будет вашими ключами в словаре Python.

...