install.packages()R中的函数是自动解压缩实用程序,它在R中获取和安装包.
如何找出R选择存储包的目录?
如何更改R存储和访问包的目录?
鉴于repo Foo和repo Bar.我想将Bar与Foo合并,但仅限于一个单独的分支,称为baz.
git checkout -b baz <=把Bar repo放在这里.
假设你有一个字符向量:
char <- c("one", "two", "three")
Run Code Online (Sandbox Code Playgroud)
当您引用索引值时,您将获得以下内容:
> char[1]
[1] "one"
Run Code Online (Sandbox Code Playgroud)
如何从返回值中删除引号以获得以下内容?
[1] one
Run Code Online (Sandbox Code Playgroud) 我正在使用quantmod包从Yahoo导入金融系列数据.
library(quantmod)
getSymbols("^GSPC")
[1] "GSPC"
Run Code Online (Sandbox Code Playgroud)
我想将对象"GSPC"的名称更改为"SPX".我在reshape包中尝试了重命名功能,但它只更改了变量名."GSPC"对象有向量GSPC.Open,GSPC.High等.我想将"GSPC"重命名为"SPX",也将GSPC.Open改为SPX.Open等.
作为最佳实践的问题,我试图确定apply()在矩阵中创建函数是否更好,或者如果通过函数简单地循环矩阵更好.我尝试了两种方式,并惊讶地发现apply()速度较慢.任务是取一个向量并将其评估为正数或负数,然后如果为正数则返回1,如果为负则返回-1.该mash()函数循环和squish()功能传递给apply()函数.
million <- as.matrix(rnorm(100000))
mash <- function(x){
for(i in 1:NROW(x))
if(x[i] > 0) {
x[i] <- 1
} else {
x[i] <- -1
}
return(x)
}
squish <- function(x){
if(x >0) {
return(1)
} else {
return(-1)
}
}
ptm <- proc.time()
loop_million <- mash(million)
proc.time() - ptm
ptm <- proc.time()
apply_million <- apply(million,1, squish)
proc.time() - ptm
Run Code Online (Sandbox Code Playgroud)
loop_million 结果:
user system elapsed
0.468 0.008 0.483
Run Code Online (Sandbox Code Playgroud)
apply_million 结果:
user system …Run Code Online (Sandbox Code Playgroud) 可能重复:
在R中清除控制台的功能
在bash中,它是这样的:
$ clear
Run Code Online (Sandbox Code Playgroud)
而且我相信它是Windows版R中的CTL-L.但是如何在Unix-R R控制台中清除R控制台呢?你需要写一个特殊的功能,那会是什么样子?
用于演示递归的规范函数是factorial()函数.我自己尝试了一个简单的实现,并提出了这个:
factorial <- function(x){
if(x==1)
return( 1)
else
return(x*factorial(x-1))
}
Run Code Online (Sandbox Code Playgroud)
根据我对该主题的调查,似乎存在一些争论,即使用递归或简单迭代是否更好.我想看看R如何实现它并在gregmisc包中找到了factorial()函数.我以为我会找到类似于我的实现或者经常迭代的东西.我发现了这个:
> factorial
function (x)
gamma(x + 1)
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
因此,我对R是否更喜欢递归或迭代的问题的答案是"既不".至少在这个实现中.是否有充分的理由避免R中的递归函数?
更新:
gregmisc版本:
>ptm <- proc.time()
> factorial(144)
[1] 5.550294e+249
> proc.time() - ptm
user system elapsed
0.001 0.000 0.001
Run Code Online (Sandbox Code Playgroud)
我的版本:
> factorial(144)
[1] 5.550294e+249
> proc.time() - ptm
user system elapsed
0.002 0.001 0.006
Run Code Online (Sandbox Code Playgroud) 在R中编写函数的常规方法(据我所知)是为了避免副作用并从函数返回一个值.
contained <- function(x) {
x_squared <- x^2
return(x_squared)
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,返回从函数输入计算的值.但是变量x_squared不可用.
但是如果你需要违反这个基本的函数式编程原则(我不确定R对这个问题有多严重)并从函数中返回一个对象,你有两个选择.
escape <- function(x){
x_squared <<- x^2
assign("x_times_x", x*x, envir = .GlobalEnv)
}
Run Code Online (Sandbox Code Playgroud)
这两个对象x_squared,并x_times_x返回.一种方法比另一种方法更好,为什么呢?
很多人都熟悉C语言中的hello world程序:
#include <stdio.h>
main ()
{
printf ("hello world");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么有些在main()函数之前,int如下所示:
int main()
Run Code Online (Sandbox Code Playgroud)
另外,我已经看到void输入的内容()如下:
int main(void)
Run Code Online (Sandbox Code Playgroud)
这似乎是额外的打字,但也许这是一个在其他情况下支付红利的最佳做法?
另外,main()如果你要返回一个字符串,为什么会先加一个int?如果有的话,人们会期望:
char main(void)
Run Code Online (Sandbox Code Playgroud)
关于为什么我们在函数结束时返回0也很模糊.
假设您要打开/ trunk子目录下checkout文件夹中的所有文件.假设文件名为first.c second.r third.cpp.如何使用单个命令将所有文件打开到vim中.
明显的答案如下
$ vim first.c second.r third.cpp
Run Code Online (Sandbox Code Playgroud)
但你能更简单地做到这一点吗?