Наконец выяснили причину :). Я забыл импортировать и включить HttpClient в свой файл app.module.ts и импортировать массив, что делает его недоступным для приложения (я так думаю).
`import {BrowserModule} из '@ angular / platform- браузер; import {NgModule} из '@ angular / core';
//Router Module for Application level Route
import { RouterModule,Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { BookViewComponent } from './book-view/book-view.component';
//import statement for service
import { BookService } from './book.service';
import { BookHttpService } from './book-http.service';
import { HttpClientModule } from '@angular/common/http';
//decorators
@NgModule({
declarations: [
AppComponent,
HomeComponent,
BookViewComponent,
],
imports: [
BrowserModule,
RouterModule.forRoot([
{ path: 'home', component: HomeComponent },
{ path: 'book/:isbn', component: BookViewComponent }
]),
HttpClientModule
],
providers: [BookService,BookHttpService],
bootstrap: [AppComponent]
})
export class AppModule { }
Я забыл включить этот модуль import { HttpClientModule } from '@angular/common/http';
Но вторая ошибка все еще на месте. SyntaxError: неожиданный токен: '{' scripts.js: 1: 5 . Я не могу понять, почему это ошибка.
Файл angular.json:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"series": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/series",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/styles.css",
"node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"scripts": [
"node_modules/jquery/dist/jquery.min.js"
]
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "series:build"
},
"configurations": {
"production": {
"browserTarget": "series:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "series:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": [
"src/styles.css"
],
"scripts": [],
"assets": [
"src/favicon.ico",
"src/assets"
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"src/tsconfig.app.json",
"src/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
},
"series-e2e": {
"root": "e2e/",
"projectType": "application",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "series:serve"
},
"configurations": {
"production": {
"devServerTarget": "series:serve:production"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "e2e/tsconfig.e2e.json",
"exclude": [
"**/node_modules/**"
]
}
}
}
}
},
"defaultProject": "series"
}
Не проверено, но не будет ли достаточно просто использовать одну петлю?
metaxcan <- c("foo1.csv", "foo2.csv")
predix_asso <- c("soo1.csv", "soo2.csv")
for (i in metaxcan){
PGC<-read.csv(i, header=T, sep=",")
asociacion<-read.table(i, header=T, sep="")
PGC_predix <- merge(PGC,asociacion,by="gene")
ngenes<-nrow(PGC_predix_1)
print(ngenes)
}
Я полагаю, вы не понимаете, как работает цикл for. Запустив приведенный ниже код, вы сможете увидеть, как он точно использует входы для i и j.
for(i in metaxcan)for(j in predix_asso)print(paste(i,j))
Для вашей проблемы я предлагаю использовать один цикл for:
for(i in seq_along(metaxcan)){
PGC <- read.csv(metaxcan[i], header = TRUE, sep = ",")
asociacion<-read.table(predix_assp[i], header=T, sep = "")
PGC_predix <- merge(PGC, asociacion, by = "gene")
print(ngenes <- nrow(PGC_predix))
}
Здесь я использую seq_along
, который создаст целочисленный вектор по длине метакскана (аналогично 1:length(metaxcan)
, но он обрабатывает случай, когда длина равна 0 без ошибки)