使用R从Internet下载文件很容易,并且以前已经解决过。
我的问题是如何避免弹出消息似乎阻止我的下载执行。特别,
download.file(url = "https://www.chicagofed.org/applications/bhc_data/bhcdata_index.cfm?DYR=2012&DQIR=4", destfile = "data/test.zip")
Run Code Online (Sandbox Code Playgroud)
给了我一点垃圾文件,而不是如果您访问该网站并手动输入年份2012和季度将得到的18 MB所需文件4。我怀疑问题是,如您手动进行操作所看到的,弹出窗口会中断下载过程,询问是否保存文件或打开文件。有什么方法可以自动跳过弹出窗口(即通过download.file)?
使用该par(mfrow = c(m,n))命令,我可以轻松制作带有m行和n列的图矩阵。
在特殊情况下,地块中存在一种模式,即每列中的所有地块共享一个重要属性,而每行中的所有地块共享一个不同的重要属性。所有这些信息都可以单独包含在每个m*n地块的标题中,但这显然是重复的。
是否有一种方便的方法可以在这样的网格中附加列名(仅在图的顶行上方)和行名(仅在图的左列的左侧)?
迄今为止的最佳解决方案:使用该text()命令将文本放置在左右图之外。但这并不令人满意,因为它需要许多单独的命令和调整参数,例如srt = 90使文本在左边距垂直,并xpd = NA在par().
考虑以下C代码:
typedef char * MYCHAR;
MYCHAR x;
Run Code Online (Sandbox Code Playgroud)
我的理解是结果是x是"char"类型的指针.但是,如果x的声明远离typedef命令发生,则代码的人类读者不会立即知道x是指针.或者,可以使用
typedef char MYCHAR;
MYCHAR *x;
Run Code Online (Sandbox Code Playgroud)
哪个被认为是更好的形式?这不仅仅是风格问题吗?
这一直困扰着我.考虑以下:
# Part A #
# Make a silly simple matrix with column names
x = matrix(1:4, ncol = 2)
colnames(x) = c("a","b")
# Part B #
# Pick out the first row of the matrix. This is not a matrix,
# and the column names are no longer accessible by colnames()
y = x[1,]
y
is.matrix(y)
colnames(y)
# Part C #
# But here is what I want:
y = matrix(x[1,], nrow = 1, dimnames = list(c(), colnames(x)))
Run Code Online (Sandbox Code Playgroud)
有没有办法用更少的处理步骤或更少的代码来实现C部分?似乎应该有一个命令几乎 …
已经讨论过如何从字符串中获取变量.实际上,get比如data.table功能:get("data.table")返回data.table.然而,
> get("data.table::data.table")
Error in get("data.table::data.table") :
object 'data.table::data.table' not found
Run Code Online (Sandbox Code Playgroud)
有没有办法保留对包名的引用?即,我不想简单地对"::"进行拆分并得到字符串的后半部分.
有没有办法用R更改igraph图中顶点边界的线型?例如,我想用虚线而不是实线制作顶点。
更新:这是生成带有黑色边框的节点的示例代码。我想知道是否有办法使黑色边框成为黑色虚线边框(如标准 R 线图中的 'lty = 2'):
library('igraph')
NodeList = data.frame('AA', x = 1 ,y = 1)
EdgeList = data.frame(from = 'AA', to = 'AA')
xgraph = graph_from_data_frame(vertices = NodeList,
d = EdgeList, directed = TRUE)
plot(xgraph, vertex.shape = 'circle',
vertex.size = 100, rescale = FALSE)
Run Code Online (Sandbox Code Playgroud) 修复k,比如说k = 2.假设我们有一个文本文件,file.txt至少有k列,并且列由|符号分隔.如何file.txt通过删除第2列等于"NA"的每一行来清理?让我们说输出是针对的outfile.txt.
对于具有任意列数的任意矩阵或数据框x,我想这样做:
x=x[order(x[,1], x[,2], ..., x[,ncol(x)]),]
Run Code Online (Sandbox Code Playgroud)
也就是说,我想按第一列排序,然后按第二列排序,...,然后按最后一列排序。这里关于排序的扩展讨论似乎不包含解决方案。这是我的解决方案,它违反了fortune(106):
sortarray = function(x){
k = ncol(x)
com = paste("x = x[order(x[,", paste(1:k, collapse = "],x[,"), "]),]", sep = "")
eval(parse(text = com))
return(x)}
x = sortarray(x)
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但是没有更干净的方法吗?
编辑重复数据删除澄清: 这个问题与建议的重复问题有很大不同(至少对我来说)。上一个问题涉及您明确指定要排序的列的情况。就我而言,我希望自动选择列(特别是所有列),而不是必须在排序命令中键入每个列名称。下面的答案解决了我的问题,与上一个问题的任何答案不同。
我有点盲目地尝试了很多变化,curl并wget尝试下载一些.zip文件.我尝试的第一件事是:
curl --klo ".\bhcdata#1.zip" "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=[1-4]"
Run Code Online (Sandbox Code Playgroud)
上面的命令实际上是由芝加哥联邦储备银行提供的文档中提供的,但它在我的Ubuntu机器上抛出了错误信息:curl: option --klo: is unknown.
有一种直截了当的方法吗?
为了弄清楚我正在尝试做什么: 芝加哥联邦储备银行网站允许您输入年份和季度,然后单击"下载数据文件",它会为您提供相应数据的.zip文件.我想为所有季度做这个,所以我需要一种方法来编写每个季度的命令,以便我可以循环它们.将[1-4]在本例以上命令会抓住所有四个季度的一年之内,但我会罚款只是在时间去四分之一,我尝试了更换1为好.我尝试过没有各种选项组合,但没有任何工作.
目标:使用数据步骤将整个SAS数据集导出到制表符分隔的文本文件.
问题:在我能找到的每个例子中,例如这个,必须在PUT语句后面的数据步骤中指定每个变量. 是不是只有一个简单的方法来询问"所有"变量?
我已经尝试过使用PUT _ALL_,但是在输出的每一行中都包含变量名,而不是只输出值.
以下是我输入和使用日期作为宏变量的方法:
%let x = %SYSEVALF('01jan2012'd);
%put &x; *see the date as sas sees it;
%put %SYSFUNC(putn(&x,yymmn.)); *see the date as yyyymm;
Run Code Online (Sandbox Code Playgroud)
这很棒,但我已经厌倦了输入日期'01jan2012'd.在特殊情况下,我可能希望将日期作为宏变量传递y,其中y包含在表单中yyyymmdd,如下所示:
%let y = 20120101;
%let x = %SYSEVALF(&y);
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用.因此,考虑到y,我应该怎么用,而不是%let x = %SYSEVALF(&y);有x作为的SAS看到日期之日起宏变量?
我正在尝试解码的程序包括以下行:
#define nn(sp) ((sp)->nn)
Run Code Online (Sandbox Code Playgroud)
从上下文(未显示),我很确定'sp'是一个指向结构的指针,该结构包含'nn'作为其变量之一.
在表达式"((sp) - > nn)"中,内部括号是否可以用于任何可能的目的?如果没有,外围的括号可能也没有用处吗?