我正在学习 Flask 的全栈课程。我的init .py 看起来像:
from flask import Flask
from config import Config
from flask_mongoengine import MongoEngine
app = Flask(__name__)
app.config.from_object(Config)
db = MongoEngine()
db.init_app(app)
from application import routes
Run Code Online (Sandbox Code Playgroud)
但是,在导入时from flask_mongoengine import MongoEngine,我收到 ImportError:
ImportError: cannot import name 'JSONEncoder' from 'flask.json'
Run Code Online (Sandbox Code Playgroud)
我的 venv 看起来像:
blinker==1.6.2
click==8.1.3
colorama==0.4.6
dnspython==2.3.0
email-validator==2.0.0.post2
Flask==2.3.2
flask-mongoengine==1.0.0
Flask-WTF==1.1.1
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
mongoengine==0.27.0
pymongo==4.4.0
python-dotenv==1.0.0
Werkzeug==2.3.6
WTForms==3.0.1
Run Code Online (Sandbox Code Playgroud)
我可以在这里做些什么来避免这种冲突吗?谢谢!
我正在尝试在 ggplot 图中使用 geom_line() 绘制 3 条线。其中一个变量具有不同的比例,因此我尝试使用 sec.axis 来显示它。
library(ggplot2)
library(reshape2)
tab <- data.frame(year = seq(1979,2010), freq = runif(32, 212,283), max =
runif(32, 962.1, 993.4), med = runif(32, 972.1, 989.3), min = runif(32,
955.7, 978.3))
summary(tab) # the column freq (frequency) has a different scale comparing with the other ones
Run Code Online (Sandbox Code Playgroud)
我尝试过的一些代码。
tab <- melt(tab, id = c("year")) # melt the data
ggplot(tab, aes(x = year, y = value)) +
theme_bw() +
scale_colour_manual(values =c('red','blue', 'green')) +
geom_line() +
scale_y_continuous(limits = c(900,1000), …Run Code Online (Sandbox Code Playgroud) 假设我在 R 中使用list.files()获得了下一个向量:
paths <- c("/home/user/myfolder/ERA/amsterdam/amsterdam1.nc", "/home/user/myfolder/ERA/amsterdam/amsterdam2.nc",
"/home/user/myfolder/CLMcom/HadCruz/run1/paris/paris1.nc", "/home/user/myfolder/CLMcom/HadCruz/run1/paris/paris2.nc",
"/home/user/myfolder/CNRM/CLMcom/rcp85/run1/helsinki/helsinki1.nc")
nchar(paths)
[1] 47 47 55 55 63
Run Code Online (Sandbox Code Playgroud)
如您所见,矢量路径确实具有不同大小的对象。
我想从路径中获取包含所有对象但没有内部文件名的新向量,例如:
> new_paths
[1] "/home/user/myfolder/ERA/amsterdam/"
"/home/user/myfolder/ERA/amsterdam/"
[3] "/home/user/myfolder/CLMcom/HadCruz/run1/paris/"
"/home/user/myfolder/CLMcom/HadCruz/run1/paris/"
[5] "/home/user/myfolder/CNRM/CLMcom/rcp85/run1/helsinki/"
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为我想创建一个循环,其中对于向量 new_paths中的每个i,我将使用system运行一个终端命令
我知道strsplit有可能,但是,我不是在 R 中操作文件名的专家。有人知道这种可能性吗?
如果我有此数据框:
df <- data.frame(time = seq(as.Date('2000-01-01'), length.out = 200, by = 'days'),
a = rnorm(200,8.4, 22), b=rnorm(200,8.4, 22), d= rnorm(200,8.4, 22),
e=rnorm(200,8.4, 22))
Run Code Online (Sandbox Code Playgroud)
子集化最简单的方法是什么,df以便每列的值都应大于百分之十,而小于百分之九十?
我可以使用循环来做到这一点,即:
for (i in names(df[,2:5])){
print(i)
column <- df[,c('time', i)]
q <- unname(quantile(column[,2], probs = c(0.1, 0.9))) # just for one column
column <- column[column[,2] > q[1] &column[,2] < q[2],]
df <- merge(df, column, by = 'time', all.x = T)
}
Run Code Online (Sandbox Code Playgroud)
但是有更简单更优雅的方式使用函数或包这样做dplyr。谢谢!