这篇文章(在R中的懒惰评估是指派受影响吗?)涵盖了一些共同点,但我不确定它是否回答了我的问题.
我assign在apply很久以前发现这个家庭的时候就停止了使用,虽然,纯粹出于以下情况的优雅原因:
names.foo <- letters
values.foo <- LETTERS
for (i in 1:length(names.foo))
assign(names.foo[i], paste("This is: ", values.foo[i]))
Run Code Online (Sandbox Code Playgroud)
可以替换为:
foo <- lapply(X=values.foo, FUN=function (k) paste("This is :", k))
names(foo) <- names.foo
Run Code Online (Sandbox Code Playgroud)
这也是本(其理由http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f)R-FAQ说这应该避免.
现在,我知道这assign通常是不受欢迎的.但还有其他原因我不知道吗?我怀疑它可能会与范围或懒惰的评估混乱,但我不确定?演示此类问题的示例代码将非常棒.
split将按字典顺序排序分割.在某些情况下,人们宁愿保留自然秩序.人们总是可以实现手动滚动功能,但有一个基本的R解决方案吗?
输入:
Date.of.Inclusion Securities.Included Securities.Excluded yearmon
1 2013-04-01 INDUSINDBK SIEMENS 4 2013
2 2013-04-01 NMDC WIPRO 4 2013
3 2012-09-28 LUPIN SAIL 9 2012
4 2012-09-28 ULTRACEMCO STER 9 2012
5 2012-04-27 ASIANPAINT RCOM 4 2012
6 2012-04-27 BANKBARODA RPOWER 4 2012
Run Code Online (Sandbox Code Playgroud)
split 输出:
R> split(nifty.dat, nifty.dat$yearmon)
$`4 2012`
Date.of.Inclusion Securities.Included Securities.Excluded yearmon
5 2012-04-27 ASIANPAINT RCOM 4 2012
6 2012-04-27 BANKBARODA RPOWER 4 2012
$`4 2013`
Date.of.Inclusion Securities.Included Securities.Excluded yearmon
1 2013-04-01 INDUSINDBK SIEMENS 4 2013
2 …Run Code Online (Sandbox Code Playgroud) 我有一个数据集,可能有重复的标识符记录appkey.理想情况下,重复的记录应该不存在,因此我将它们视为数据收集错误.我需要删除appkey多次出现的所有实例.
该drop_duplicates方法在这种情况下是无效的(或者是?),因为它选择了第一个或最后一个重复项.是否有任何明显的成语用熊猫实现这一目标?
我最近开始研究McKinney的Python用于数据分析.这使我在书中绊倒了:
数组切片是原始数组的视图.这意味着数据不会被复制,对视图的任何修改都将反映在源数组中......由于NumPy的设计考虑了大数据用例,如果NumPy坚持将数据复制到左边,你可以想象性能和内存问题.对.
精细.似乎是一个明智的设计选择.但两页之后它说:
通过布尔索引从数组中选择数据始终会创建数据的副本,即使返回的数组未更改也是如此.
等等,什么?也,
您甚至可以将布尔数组与切片混合和匹配...例如
data[names == 'Bob', 2:]
那会有什么回报呢?对数据副本的看法?为什么这种行为是这样的呢?来自R,我看到布尔索引和基于位置的索引同样经常使用的技术.如果NumPy的设计旨在避免复制内存,那么推动这种设计选择的因素是什么呢?
谢谢.
假设我有一个矩阵bigm.我需要使用这个矩阵的随机子集并将其提供给机器学习算法,比如说svm.矩阵的随机子集仅在运行时才知道.此外,还有其他参数也可以从网格中选择.
所以,我的代码看起来像这样:
foo = function (bigm, inTrain, moreParamsList) {
parsList = c(list(data=bigm[inTrain, ]), moreParamsList)
do.call(svm, parsList)
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是R是否使用新内存bigm[inTrain, ]在parsList中保存该对象.(我的猜测确实如此.)我可以使用哪些命令来测试这些假设?另外,有没有一种方法在不使用新内存的情况下在R中使用子矩阵?
编辑:
另外,假设我foo使用mclapply(在Linux上)调用bigm驻留在父进程中.这是否意味着我正在制作mc.cores副本bigm或所有核心只使用父级的对象?
跟踪内存位置和在不同内核中生成的对象消耗的任何功能和启发式算法?
谢谢.
我写了一个快速但肮脏的宏来计时 Lisp 代码。然而,我现在面临的问题是我想在函数中包含一个可选的输出流。但是,我不知道&optional如何&body在defmacro. 我寻找了一些例子,但只找到了那些defun我认为我理解的例子。我无法弄清楚为什么这对我来说失败了。任何提示:
(defmacro timeit (&optional (out-stream *standard-output*) (runs 1) &body body)
"Note that this function may barf if you are depending on a single evaluation
and choose runs to be greater than one. But I guess that will be the
caller's mistake instead."
(let ((start-time (gensym))
(stop-time (gensym))
(temp (gensym))
(retval (gensym)))
`(let ((,start-time (get-internal-run-time))
(,retval (let ((,temp))
(dotimes (i ,runs ,temp)
(setf ,temp ,@body))))
(,stop-time (get-internal-run-time)))
(format ,out-stream
"~CTime …Run Code Online (Sandbox Code Playgroud) 我在ISLR(图2.13)或ESL中找到了这个特殊的图表.我无法猜测作者是如何在R中做到这一点的.我知道如何轻松获得橙色和蓝色点.主要的困惑是背景点和紫色线.
有任何想法吗?
下面是一些示例代码,用于获取带有灰色网格的黄色和橙色点.如何获得紫色的任意非线性曲线,然后根据曲线为网格着色?
set.seed(pi)
points = replicate(100, runif(2))
pointsColored = ifelse(apply(points, 2, sum) <= 1, "orange", "blue")
# Confound some
pointsColored[sample.int(length(pointsColored), 10)] = "orange"
plot(x=points[1, ], y=points[2, ])
grid(nx=100, ny=100)
# Plot points over the grid.
points(x=points[1, ], y=points[2, ], col=pointsColored)
Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试设计一个正则表达式来加入字符串中单个字符的任何连续实例.让我举个例子:
'A B C Industries' => 'ABC Industries'
'Industries A B C' => 'Industries ABC'
'Foo A B C Industries' => 'Foo ABC Industries'
'Foo A B C Industries X Y Z Product' => 'Foo ABC Industries XYZ Product'
Run Code Online (Sandbox Code Playgroud)
等等
以下是我做过的两次尝试(都不完整):
1)
''.join(r'(?<=\s\S)\s|(?<=^\S)\s')
Run Code Online (Sandbox Code Playgroud)
2)
'\S+'.findall()
Run Code Online (Sandbox Code Playgroud)
然后循环输出.
是否有一个可以一举做到这一点的正则表达式?