小编tom*_*mka的帖子

如何用R中的向量元素划分矩阵的每一行

我想用固定的向量划分矩阵的每一.例如

mat<-matrix(1,ncol=2,nrow=2,TRUE)
dev<-c(5,10)
Run Code Online (Sandbox Code Playgroud)

mat/dev分割各dev.

     [,1] [,2]
[1,]  0.2  0.2
[2,]  0.1  0.1
Run Code Online (Sandbox Code Playgroud)

但是,我希望得到这个结果,即按行进行操作:

rbind(mat[1,]/dev, mat[2,]/dev)

     [,1] [,2]
[1,]  0.2  0.1
[2,]  0.2  0.1
Run Code Online (Sandbox Code Playgroud)

到那儿有明确的命令吗?

r vector matrix

56
推荐指数
2
解决办法
6万
查看次数

使用R parallel来加速bootstrap

我想加快我的引导功能,它本身运行得非常好.我读过,因为R 2.14有一个名为的软件包parallel,但我觉得这对某人很难.对计算机科学知识不足以真正实现它.也许有人可以提供帮助.

所以这里有一个引导程序:

n<-1000
boot<-1000
x<-rnorm(n,0,1)
y<-rnorm(n,1+2*x,2)
data<-data.frame(x,y)
boot_b<-numeric()
for(i in 1:boot){
  bootstrap_data<-data[sample(nrow(data),nrow(data),replace=T),]
  boot_b[i]<-lm(y~x,bootstrap_data)$coef[2]
  print(paste('Run',i,sep=" "))
}
Run Code Online (Sandbox Code Playgroud)

目标是使用并行处理/利用我的PC的多个核心.我正在Windows下运行R. 谢谢!

编辑(诺亚回复后)

以下语法可用于测试:

library(foreach)
library(parallel)
library(doParallel)
registerDoParallel(cores=detectCores(all.tests=TRUE))
n<-1000
boot<-1000
x<-rnorm(n,0,1)
y<-rnorm(n,1+2*x,2)
data<-data.frame(x,y)
start1<-Sys.time()
boot_b <- foreach(i=1:boot, .combine=c) %dopar% {
  bootstrap_data<-data[sample(nrow(data),nrow(data),replace=T),]
  unname(lm(y~x,bootstrap_data)$coef[2])
}
end1<-Sys.time()
boot_b<-numeric()
start2<-Sys.time()
for(i in 1:boot){
  bootstrap_data<-data[sample(nrow(data),nrow(data),replace=T),]
  boot_b[i]<-lm(y~x,bootstrap_data)$coef[2]
}
end2<-Sys.time()
start1-end1
start2-end2
as.numeric(start1-end1)/as.numeric(start2-end2)
Run Code Online (Sandbox Code Playgroud)

但是,在我的机器上,简单的R代码更快.这是并行处理的已知副作用之一,即它会导致开销过程,这会增加像这样的"简单任务"中的时间吗?

编辑:在我的机器上,parallel代码比"简单"代码长约5倍.当我增加任务的复杂性(例如增加bootn)时,这个因素显然不会改变.那么代码或我的机器可能存在问题(基于Windows的处理?).

parallel-processing r statistics-bootstrap

13
推荐指数
2
解决办法
7203
查看次数

在R-studio中使用Git:无法修改代码文件

我是新手使用git,目前使用以下组合:

  • Git-Gui v.0.20
  • R-studio 0.99.489
  • R 3.22
  • Bitbucket代码库
  • Windows 7的

直到最近,这种组合才能很好地将代码拉到存储库.但现在我不能再推送修改后的代码,也不能在R-studio中提交它.在R-studio中,修改后的代码用蓝色M标记,旁边有一个复选框.我不能再查看此框用于暂存,提交和推送了.当我点击它时,它确实没有检查和反应.

当我创建一个显示为黄色问号的新代码片段时?我可以检查并推送它,但无法再检查修改后的版本.

我已经卸载了git和R-studio并重新安装但问题仍然存在.我还创建了一个新的存储库,但问题也出现在新的存储库中.我是一个有点无能哪里开始寻找soluation和网络搜索并没有屈服,除了讨论了许多成果在这里,我不能完全跟随,因为它也许不完全适用于我的问题.在任何情况下,当我给

> Sys.which('git')
Run Code Online (Sandbox Code Playgroud)

R回报:

git 
 "" 
Run Code Online (Sandbox Code Playgroud)

我很感激建议从哪里开始.

git r github rstudio

10
推荐指数
1
解决办法
1424
查看次数

为什么R在将NA值添加到具有因子的数据框时更改变量类型?

当使用带有值rbind的两个时,我对R强制变量类型的方式有疑问.我举例说明:data.framesNA

x<-factor(sample(1:3,10,T))
y<-rnorm(10)
dat<-data.frame(x,y)
NAs<-data.frame(matrix(NA,ncol=ncol(dat),nrow=nrow(dat)))
colnames(NAs)<-colnames(dat)
Run Code Online (Sandbox Code Playgroud)

现在的目标是追加dat,并NAs同时保持变量类型factornumericxy.当我给:

dat_forward<-rbind(dat,NAs)
is.factor(dat_forward$x)
Run Code Online (Sandbox Code Playgroud)

这很好用.但是后向使用rbind失败:

dat_backward<-rbind(NAs,dat)
is.factor(dat_backward$x)
is.character(dat_backward$x)
Run Code Online (Sandbox Code Playgroud)

现在x被强迫角色等级.我很困惑 - 即使我使用其他绑定顺序,也不能保留因子类型?为实现目标,我的代码会有什么直接的变化?

r dataframe rbind na r-factor

9
推荐指数
1
解决办法
2544
查看次数

如何在Windows下使用doMC或glmnet的替代并行处理实现?

我在Rstudio中使用R 3.3.1的Win7 OS.意图是glmnet与并行处理一起使用.从?glmnet帮助:

parallel:如果TRUE,使用平行的foreach适合每个折叠.必须事先注册并行,例如doMC或其他.请参阅下面的示例.

从引用的例子:

# Parallel
require(doMC)
registerDoMC(cores=4)
Run Code Online (Sandbox Code Playgroud)

install.packages('doMC')返回包不可用.手动检查CRAN可提供可下载的UNIX代码,但Windows二进制文件不可用.

我仍然可以doMC在我的Win7操作系统下使用相同的代码或什么是有用的替代方案?

parallel-processing foreach r domc

7
推荐指数
1
解决办法
3557
查看次数

在表达式中添加垂直条以绘图

我想在一个绘图中添加一个表达式,其中出现一个条件术语,例如E(Y | X).使用例如:

plot(x=c(.5),ylim=c(0,1),xlim=c(0,2))
text(x=1,y=.5,labels=expression(E(X|Y)),pos=1)
Run Code Online (Sandbox Code Playgroud)

不这样做,但它产生E(|(X,Y)).显然我不知道如何正确地将垂直条放入表达式 - 有人可以帮忙吗?谢谢.

expression r

5
推荐指数
1
解决办法
2324
查看次数

从函数环境运行时,R 的 `polr` 函数中的潜在错误?

我可能已经发现了一些类型的错误polr的功能(序/多分回归)MASSR。问题似乎与对象coef()上的使用有关summary,但也许不是。

问题发生在一个类型的函数中:

pol_me <- function(d){
    some_x   <- d[,1]
    mod      <- polr(some_x ~ d[,2])
    pol_sum  <- summary(mod)
    return(pol_sum)
}
Run Code Online (Sandbox Code Playgroud)

为了说明,我模拟了序数回归模型的一些数据。

set.seed(2016)
n=1000
x1 <- rnorm(n)
x2 <- 2*x1 +rnorm(n)

make_ord <- function(y){
  y_ord <- y
  y_ord[y < (-1)] <- 1
  y_ord[y >= (-1) & y <= (1)] <- 2
  y_ord[y >= 1] <- 3
  y_ord <- as.factor(y_ord)
}

x1 <- make_ord(x1)
dat <- data.frame(x1,x2)
Run Code Online (Sandbox Code Playgroud)

当我们现在调用函数时:

library(MASS)
pol_me(d = dat)
Run Code Online (Sandbox Code Playgroud)

我们得到错误

 Error …
Run Code Online (Sandbox Code Playgroud)

debugging regression r function

5
推荐指数
1
解决办法
783
查看次数

在计算概率接近0和1时,如何提高R的精度?

我有一个问题,即表示[0,1]区间总和的概率的变量之和0应该是>0.问题肯定与浮点表示和精度有关R,但我无法确定它出错的地方.

options(digits = 22)
p1 = 0.8
p2 = 0.9999999999999998

p11 = p1 * p2
p10 = p1 - p11
p01 = p2 - p11
p00 = 1 - p11 - p10 - p01
Run Code Online (Sandbox Code Playgroud)

p11, p10, p01都是numeric.p00numeric不过

> p00
[1] 0
Run Code Online (Sandbox Code Playgroud)

p00 == 0TRUE我的机器上.但是它不应该是零,因为它可以证明p00>0数学.

这个问题似乎与p01小的事实有关.不过p01>0TRUE仍然适用我的机器上.为什么在拿到最后一笔钱时会出错p00

是否有一个数字技巧来解决这个问题,即得到一个精确的表示p00 …

floating-point precision r

5
推荐指数
1
解决办法
2834
查看次数

如何在R中正确设置库目录/路径

我的目标是定义一个R用于安装和搜索库的路径.我读到这可以通过更改安装路径中的Rprofile.site文件来完成R.我在那里尝试了两个命令:

.libPaths("D:/RLibrary")
.Library.site <- file.path("D:/RLibrary")
Run Code Online (Sandbox Code Playgroud)

其中我甚至在阅读了帮助文件后也没有完全理解其中的差异.

但是,在启动之后R,仍然会在两个位置查找库.

.libPaths()
[1] "D:/RLibrary"                        "C:/Program Files/R/R-3.3.1/library"
Run Code Online (Sandbox Code Playgroud)

为什么这样,以及如何仅将库路径更改为我想要的路径?

r

4
推荐指数
1
解决办法
1万
查看次数

从Python中的矩阵中选择列向量

我想在Python/numpy中的矩阵中索引列向量,并将其作为列向量而不是1D数组返回.

x = np.array([[1,2],[3,4]])
x[:,1]
>array([2, 4])
Run Code Online (Sandbox Code Playgroud)

给予

np.transpose(x[:,1])

不是解决方案.在numpy.transpose文档之后,这将返回行向量(1-D数组).

python indexing numpy matrix

3
推荐指数
1
解决办法
2607
查看次数