小编Zek*_*eke的帖子

R 如何评估这些奇怪的表达式?

我试图在 R(例如,a, *b, c = [1,2,3], "C")中使 Python 3 样式的赋值解包成为可能,尽管我非常接近(您可以在此处查看我的代码),但我最终还是遇到了一些(奇怪的)问题。

我的代码是这样工作的:

a %,*% b %,% c <- c(1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

并将分配a= 1b=c(2,3,4)c= 5(我的代码实际上确实做到了这一点,但有一个小问题我稍后会讲到)。

为了让它做任何事情,我必须定义:

`%,%` <- function(lhs, rhs) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

`%,%<-` <- function(lhs, rhs, value) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

(以及%,*%%,*%<-,它们是先前函数的轻微变体)。

第一个问题:为什么[R替代*tmp*lhs参数

据我所知,R 首先从左到右评估这段代码(即,从ac,直到它到达最后一个%,%,然后,它从右到左返回,沿途分配值。但是第一个我注意到的奇怪的事情是,当我做match.call()substitute(lhs)在类似的事情中x %infix% …

evaluation r infix-operator iterable-unpacking

8
推荐指数
1
解决办法
91
查看次数

Python搁置有未列出的项目

我一直在使用Python的shelve模块(在OSX 10.9.5上使用Python 3.4)将一堆字典保存到文件中.每个key都是一个int(例如,"84554")的字符串,每个都是一些字符串的value字典.

没有键被使用两次,我知道所有可能键的总超集.我将这些键值对添加到shelfvia线程中,每次运行时都会添加哪些键/值(这是预期的).

我遇到的问题是使用shelve's 可迭代/可见的键shelf.keys()数以及唯一键的数量key in shelf.keys() 不同.

这是我的代码.我首先初始化和加载ids,这是所有可能的键的列表.

import shelve 
from custom_code import *
MAIN_PATH = "/Users/myname/project_path/src/"
ids = list(set(load_list(MAIN_PATH + "id_list.pkl")))
c = c2 = 0
good_keys = []
bad_keys = []
Run Code Online (Sandbox Code Playgroud)

然后我打开架子,计算我迭代的所有键数db.keys(),将"好"键添加到列表中.

db = shelve.open(MAIN_PATH + "first_3")
for k in db.keys():
    c2+=1
    good_keys+=[k]
Run Code Online (Sandbox Code Playgroud)

然后,我检查每个可能的钥匙,看它是否在架子上,检查架子上是否存在,并做同样的事情.

for j in set(ids):
    if j in db.keys():
        c+=1
        bad_keys+=[j]
Run Code Online (Sandbox Code Playgroud)

两个计数器,c并且 …

python dictionary shelve dbm python-3.x

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

如何从R中的.csv文件中读取列向量

所以我在Python中处理数据,我输出的是.csv文件.我希望R能够以这样一种方式读取.csv文件,它将它变成一个数据帧,其中一些列实际上是向量.

这甚至是可能的,我将如何格式化.csv以便这可能发生?谢谢!

csv r dataframe

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