2016-08-15 1 views
2

Я должен поддерживать некоторый код R, а парень, который написал его, больше здесь нет.Странное заявление sql в sqldf и R-коде

Я нашел в своем коде некоторые странные заявления sql, и я не уверен, что они означают. Это один из них:

sqldf(paste("select ", i," i , * from simTypeFile union all select * from simTypeFiles", sep="")) 

i - индекс, который увеличивается с нуля на x. Я ожидал бы, что за ключевым словом select будет указано имя_столбца или звездочка. В этом случае за ним следует целое число i, пробел, строка i и звездочка.

В таблице, которая должна быть запрошена, нет столбца с номером i или строкой «i». Что означают эти символы после выражения?

ответ

1

Я думаю, что они готовятся данные для моделирования и добавления i колонку для индексирования и назвав его в качестве i (чтобы сделать его явное использование AS назвать столбец, например: select 1 AS i), рассмотрим ниже пример:

# emprty data.frame to fill in 
simTypeFiles <- data.frame(i = numeric(0), speed = numeric(0), dist = numeric(0)) 

# dummy data 
simTypeFile <- cars[1:3,] 

# then loop and rbind - union 
for(i in 1:3){ 
    simTypeFiles <- 
    rbind(
     simTypeFiles, 
     sqldf(paste("select ", i," i , * from simTypeFile union all select * from simTypeFiles", sep = "")) 
    ) 
} 

simTypeFiles 
+0

Ommiting 'rbind()' и использовать что-то вдоль 'simTypeFiles <- sqldf (paste (" select ", i," i, * from simTypeFile union all select * from simTypeFiles ", sep =" "))' with ' print() 'внутри цикла показывает это еще лучше. –