小编Ant*_*nin的帖子

在R中删除数据文件的空行

我有一个空行的数据集.我想删除它们:

myData<-myData[-which(apply(myData,1,function(x)all(is.na(x)))),]
Run Code Online (Sandbox Code Playgroud)

它运作正常.但是现在我想在我的数据中添加一个列并初始化第一个值:

myData$newCol[1] <- -999

Error in `$<-.data.frame`(`*tmp*`, "newCol", value = -999) : 
  replacement has 1 rows, data has 0
Run Code Online (Sandbox Code Playgroud)

不幸的是它不起作用,我不明白为什么,我无法解决这个问题.当我使用以下方法一次删除一行时,它工作正常:

TgData = TgData[2:nrow(TgData),]
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

当我只使用前13000行时,它也可以工作.

但它不适用于我的实际数据,有32.000行.

我做错了什么?这对我来说似乎毫无意义.

r

67
推荐指数
4
解决办法
13万
查看次数

PyDev Eclipse Python解释器错误:找不到stdlib

我一直在尝试使用Eclipse 3.6作为Python编辑器.我安装了最新版本的PyDev,然后尝试在我的mac上设置首选项的Interpreter-Python字段.

我的python版本是2.6,路径是"/ usr/bin/python".当我输入这个,并选择要添加到系统PYTHONPATH的项目时,我收到以下错误消息:

错误:找不到Python stdlib

似乎在安装过程中未找到/选择了Python/Lib文件夹(包含标准库).

这个文件夹(包含诸如threading.py和traceback.py之类的文件)是PyDev正常运行所必需的(它必须包含实际的源文件,而不仅仅是.pyc文件)...

所以我不能告诉eclipse翻译路径!任何帮助都会很棒!(我尝试重新安装PyDev,没有运气)

谢谢!

按照Praveen的回答,我的python库位于/library/python/2.6/site-packages中.当我将/ usr/bin/python输入到解释器字段时,eclipse会询问我想要添加到系统PYTHONPATH的路径.其中一个复选框项就是该路径.所以我和其他盒子一起检查它.单击确定,我得到相同的错误.

python eclipse pydev

25
推荐指数
4
解决办法
3万
查看次数

用R分段回归:绘制段

我有54​​分.它们代表产品的供应和需求.我想表明这个提议有一个突破点.

首先,我对x轴(商品)进行排序并删除出现两次的值.我有47个值,但我删除了第一个和最后一个(将它们视为断点没有意义).休息长度为45:

Break<-(sort(unique(offer))[2:46])
Run Code Online (Sandbox Code Playgroud)

然后,对于这些潜在断点中的每一个,我估计一个模型并且我在"d"中保留残差标准误差(模型汇总对象中的第六个元素).

d<-numeric(45)
for (i in 1:45) {
model<-lm(demand~(offer<Break[i])*offer + (offer>=Break[i])*offer)
d[i]<-summary(model)[[6]] }
Run Code Online (Sandbox Code Playgroud)

绘制d,我注意到我的较小残差标准误差为34,对应于"Break [34]":22.4.所以我用最后的断点来写我的模型:

model<-lm(demand~(offer<22.4)*offer + (offer>=22.4)*offer)
Run Code Online (Sandbox Code Playgroud)

最后,我对我的新模特感到满意.它比简单的线性好得多.我想画它:

plot(demand~offer)
i <- order(offer)
lines(offer[i], predict(model,list(offer))[i])
Run Code Online (Sandbox Code Playgroud)

但我有一条警告信息:

Warning message:
In predict.lm(model, list(offer)) :
  prediction from a rank-deficient fit may be misleading
Run Code Online (Sandbox Code Playgroud)

更重要的是,我的情节上的线条真的很奇怪.

我的情节与所谓的两个部分,但没有加入

这是我的数据:

demand <- c(1155, 362, 357, 111, 703, 494, 410, 63, 616, 468, 973, 235,
            180, 69, 305, 106, 155, 422, 44, 1008, 225, 321, 1001, 531, 143,
            251, 216, 57, 146, 226, 169, 32, 75, 102, …
Run Code Online (Sandbox Code Playgroud)

plot r piecewise

18
推荐指数
2
解决办法
2万
查看次数

psycopg2.InterfaceError:连接已关闭/ pgr_astar

我正在使用 psycopg2 从 python 访问 postgresql 数据库。当我尝试运行最短路径的 pgrouting 函数“pgr_astar”时,收到错误

cur = db.cursor()
psycopg2.InterfaceError: connection already closed
Run Code Online (Sandbox Code Playgroud)

基本上,发生的情况是:当 pgr_astar 找不到两点之间的路径时,它会导致数据库崩溃,并关闭与数据库的连接。

如何才能避免这种情况呢?

我尝试使用 try/ except 隔离该函数并创建自己的连接,因此如果它关闭也没有问题:

conn = psycopg2.connect(...)
try:
    result = getRecords(conn,query_pgr_astar)
    return float(result[0]['sum'])
except:
    return 500000000.0
conn.close()
Run Code Online (Sandbox Code Playgroud)

但在这种情况下我收到

cur.execute(query)
psycopg2.DatabaseError: SSL SYSCALL error: EOF detected
Run Code Online (Sandbox Code Playgroud)

如何管理不可能的路径?

(我对 pgdb 和旧的 Shortest_path_astar 函数做了同样的事情(我不再可用),我没有问题)

Postgresql 日志是:

2013-11-27 15:54:35 CET LOG:  terminating any other active server processes
2013-11-27 15:54:35 CET WARNING:  terminating connection because of crash of another server process
2013-11-27 15:54:35 CET DETAIL: …
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg2 a-star pgrouting

5
推荐指数
1
解决办法
4万
查看次数

pg.InternalError:SSL SYSCALL 错误:检测到 EOF

我在 python 中有一个使用多处理和访问数据库的代码。它大部分时间都能正常工作,但有时会产生错误。该错误最初是

File "/usr/lib/python2.7/multiprocessing/pool.py", line 528, in get
    raise self._value
pg.OperationalError: can't rollback
Run Code Online (Sandbox Code Playgroud)

或者

File "/usr/lib/python2.7/multiprocessing/pool.py", line 528, in get
    raise self._value 
pg.InternalError: SSL SYSCALL error: EOF detected
Run Code Online (Sandbox Code Playgroud)

我用来访问数据库的代码是

def getRecords(db,query):
    cur=db.cursor()
    cur.execute(query)
    types=getTypes(cur.description)
    columns=getColumns(cur.description)
    rows=cur.fetchall()
    cur.close()
    try:
        db.commit()
    except:
        db.rollback()
Run Code Online (Sandbox Code Playgroud)

多处理是通过以下方式完成的:

po = multiprocessing.Pool()
for an_element in a_list:
    for an_object in a_list_of_objects:
        results.append(po.apply_async(the_multiprocessed_function, (an_element, an_object)))               
po.close()
po.join()
for r in results:
    some_function_of(r.get())
Run Code Online (Sandbox Code Playgroud)

我想知道我是否在跨进程共享连接,但是对于每个多处理函数,我创建了新连接 (conn = pgdb.connect(...)) 并关闭它 (conn.close())。

然后,我想知道它是否与我提供给我的多处理函数的参数有关,特别是因为它们是我自己定义的类实例,但是为什么这会在 pg 中产生错误?

对不起,如果我的问题不是很清楚,但我不知道在哪里寻找错误。多处理适用于较小的实例和其他表,并且已经过测试。但是当更改查询中的一个表并运行代码以解决更大的问题时,我在某处达到了一些限制。

python postgresql asynchronous multiprocessing pgdb

4
推荐指数
1
解决办法
1万
查看次数