我是R(并且通常编程)的新手,并且对于为什么下面的代码产生不同的结果感到困惑:
x <- 100
for(i in 1:5){
x <- x + 1
print(x)
}
Run Code Online (Sandbox Code Playgroud)
这会按照我的预期逐步打印序列101:105.
x <- 100
f <- function(){
x <- x + 1
print(x)
}
for(i in 1:5){
f()
}
Run Code Online (Sandbox Code Playgroud)
但这只打印了101次.
为什么将逻辑打包到函数中会导致它在每次迭代时恢复到原始值而不是递增?我能做些什么来使这项工作成为一个反复调用的功能?
我是Python新手,在尝试使用OS X 10.8中的Automator运行使用Beautiful Soup的Python脚本时出现问题.
这个脚本在Terminal中运行得很好,其他不涉及Beautiful Soup的脚本在Automator中使用完全相同的命令对我来说很好 - 但是当我尝试使用Automator来运行这个脚本或包含该行的任何其他脚本时from bs4 import BeautifulSoup
,它返回一条错误消息.
弹出窗口显示消息"操作""运行Shell脚本"遇到错误.检查操作的属性,然后再次尝试运行工作流程.Automator日志显示'运行Shell脚本失败 - 1错误; 追踪(最近一次调用最后一次):'
如果我对Python生态系统有更多的了解,那对我来说可能是显而易见的,但我搜索过并找不到答案.在Automator中,我正在使用"运行Shell脚本"操作,使用/bin/bash
shell,将输入传递给stdin,并输入以下命令(所有这些都适用于其他非BeautifulSoup脚本):
cd desktop
python script.py
Run Code Online (Sandbox Code Playgroud)
我在OSX 10.8,Python 2.7和BS4上.
我想创建一个ggplot,其中统计参数根据美学映射因子而变化.具体来说,我想使用stat_density2d()创建一个等高线图,我想将离散因子映射到颜色,我想为每个因子级别指定不同的中断值.
这是一个最小的工作示例:
d <- data.frame(x=c(rnorm(500), rnorm(500, 2)), y=rnorm(1000), z=c(rep("a", 500), rep("b", 500)))
ggplot(d, aes(x, y, fill=z)) +
stat_density2d(breaks=.05, geom="polygon", alpha=.5)
Run Code Online (Sandbox Code Playgroud)
这就是我想要的,除了因素之间的休息是相同的.我正在寻找一种方法来为每个因素指定不同的中断值.一种方法是为每个因素创建一个单独的层:
ggplot() +
stat_density2d(data=d[d$z=="a",], aes(x, y), breaks=.05, geom="polygon", alpha=.5, fill="red") +
stat_density2d(data=d[d$z=="b",], aes(x, y), breaks=.1, geom="polygon", alpha=.5, fill="blue")
Run Code Online (Sandbox Code Playgroud)
但这是不可行的,因为我失去了传说,对于超过两个因子水平的情况来说这太麻烦了.
我想结合上述两种情况的优势.我几乎是肯定的,我已经看到了一种方法来完成我正在尝试做的事情,但现在似乎无法找到它,因为它是相关的.有人想过可能的解决方案吗?