我试图在 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= 1、b=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)
(以及%,*%和%,*%<-,它们是先前函数的轻微变体)。
*tmp*的lhs参数据我所知,R 首先从左到右评估这段代码(即,从a到c,直到它到达最后一个%,%,然后,它从右到左返回,沿途分配值。但是第一个我注意到的奇怪的事情是,当我做match.call()或substitute(lhs)在类似的事情中x %infix% …
我一直在使用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中处理数据,我输出的是.csv文件.我希望R能够以这样一种方式读取.csv文件,它将它变成一个数据帧,其中一些列实际上是向量.
这甚至是可能的,我将如何格式化.csv以便这可能发生?谢谢!