2017-04-09 6 views
-1

This is related to the question that I posted earlier. R에서 SQL을 사용하지 않고 R에서이를 수행하는 더 좋은 방법이 있어야한다고 생각합니다. SQL은 R에서 변수를 인식하지 못하기 때문에 순간 오류. 이는 구문 오류가 원인 일 수 있습니다. SQL 오류는 해당 열이 df0에 없기 때문에 분명합니다. 파일을 선택한 행에 삽입하는 방법이 필요합니다. R이 2 개 이상의 파일을 읽지 않는 이유는 무엇입니까?테이블에 ASCII를 읽고 테이블의 특정 행을 선택하십시오. R

누구나 근본 원인을 지적하고 더 나은 해결책을위한 아이디어를 던질 수 있습니까?

> df <- NULL 
> fn <- NULL 
> n <- 1 
> for (f in files) { 
+  fn <- file_path_sans_ext(f) 
+  df0 <-read.table(f, sep=",") 
+  n <- n + 1 
+  df <- sqldf('select n, fn, V1, V2 from df0 
where V1 IN (101, 201, 301, 401)') 
-- thought R could read fn just as df0 
+  df <- rbind(df) --further fn and n only reads two files out of 1000s 
+ } 
Error in rsqlite_send_query([email protected], statement) : 
no such column: n, df1 
+0

SO의 r 태그에 게시 된 코드는 다른 사람이 세션에 복사하여 실행할 수 있도록 최소한으로 완전하고 재현 가능해야합니다. –

+0

@ G.Grothendieck 나는 너를 따라하지 않는다. 보시다시피이 태그를 처음 접하십니까? 새로운 대회인가 아니면 R을위한 대회인가? 당신은 정확히 "최소한의 완전하고 재현성있는"것을 지적 할 수 있습니까? 사용자의/dev의 코드가 특정 목적에 맞지 않습니까? – bonCodigo

+0

http://stackoverflow.com/help/mcve –

답변

0

sqldf은 당신의 작업 공간에서 임시 데이터베이스 및 업로드 데이터 프레임 (안 스칼라 또는 다른 개체)를 만듭니다. 스칼라를 통합하려는 경우 gsubfn 패키지 (sqldf 패키지가 자동으로로드)의 fn을 사용하여 SQL 문에 삽입 할 수 있습니다. 예를 들어, BOD data.frame에 내장 된 사용 :

library(sqldf) 

n <- nrow(BOD) 
s <- "abc" 

fn$sqldf("select $n as n, '$s' as string, demand from BOD") 

주는 :

n string demand 
1 6 abc 8.3 
2 6 abc 10.3 
3 6 abc 19.0 
4 6 abc 16.0 
5 6 abc 15.6 
6 6 abc 19.8 

?sqldf?fn를 읽고 모든 일이 잘 기록되어 있기 때문에 sqldf github home page에있는 예제를 통해 이동 제언한다.

+0

언급 한 바와 같이 R에서 SQL을 사용하지 않는 것을 선호합니다. 나는 과거에 SQL의 충분한 부분을 가지고있었습니다. 다른 사용자 (SQL과 DB에 능숙하지 않은 사용자)에게만 이익이 주어지며, 선호도는 R에만 있습니다. sql을 사용하지 않고도 동일한 목표를 달성 할 수있는 대안을 제안 할 수 있습니까? – bonCodigo