小编Pra*_*ani的帖子

vector for this for循环(当前行取决于上面的行)

假设我想在给定正/负1的预生成矩阵(100x3)的情况下创建n = 3个随机游走路径(路径长度= 100).第一条路径从10开始,第二条路径从20开始,第三条路径从30开始:

set.seed(123)
given.rand.matrix <- replicate(3,sign(rnorm(100)))
path <- matrix(NA,101,3)
path[1,] = c(10,20,30)

for (j in 2:101) {
  path[j,]<-path[j-1,]+given.rand.matrix[j-1,]
}

path[2:101,]<-path[1:100,]+given.rand.matrix

set.seed(123)
given.rand.matrix <- replicate(3,sign(rnorm(100)))
path <- matrix(NA,101,3)
path[1,] = c(10,20,30)

for (j in 2:101) {
  path[j,]<-path[j-1,]+given.rand.matrix[j-1,]
}

最终值(给定种子和兰特矩阵)是14,6,34 ......这是期望的结果......但......

问题:有没有办法对for循环进行矢量化?问题是计算时路径矩阵尚未完全填充.因此,替换循环 path[2:101,]<-path[1:100,]+given.rand.matrix 主要返回NAs.我只是想知道这种类型的for循环在R中是否可以避免.

非常感谢你提前.

r vectorization

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

R:拆分数据帧,将函数应用于每个子集中的所有行对

我是R的新手,我正在努力完成以下任务efficiently.

我有一个data.frame,x与列:start,end,val1,val2,val3,val4.列按照排序/排序start.

对于每一个start,首先我必须找到x该共享中的所有条目相同start.由于列表是有序的,因此它们将是连续的.如果特定start只出现一次,那么我忽略它.然后,对于具有相同条目的这些条目,start假设有一个特定start条目,则有3个条目,如下所示:

条目 start=10

start end val1 val2 val3 val4
   10  25    8    9    0    0
   10  55   15  200    4    9
   10  30    4    8    0    1

然后,我必须一次取2行并fisher.test在2x4矩阵上执行val1:4.那是,

row1:row2 => fisher.test(matrix(c(8,15,9,200,0,4,0,9), nrow=2))
row1:row3 => fisher.test(matrix(c(8,4,9,8,0,0,0,1), nrow=2))
row2:row3 = …

r vectorization dataframe

2
推荐指数
1
解决办法
2410
查看次数

分位数回归和p值

我正在为我的数据集应用guantile回归(使用R).使用不同的分位数回归线(taus < - c(0.05,0.25,0.75,0.95))很容易产生漂亮的散点图.

当我想为这些分位数中的每一个产生p值(为了查看每个回归线的统计显着性)时出现问题.对于中值分位数(tau = 0.5),这不是问题,但是当涉及例如tau = 0.25时,我得到以下错误消息:

>QRmodel<-rq(y~x,tau=0.25,model=T)
>summary(QRmodel,se="nid")
Error in summary.rq(QRmodel, se = "nid") : tau - h < 0:  error in summary.rq
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因?

另外:建议提及有关分位数回归模型结果的p值和系数,或者仅仅显示情节图片并根据该图片讨论结果是否足够?

最好的问候,沮丧的人

regression r quantile

2
推荐指数
1
解决办法
3144
查看次数

chisq.test错误消息

这是我遇到的一个问题:

示例数据

df <- data.frame(1,2,3,4,5,6,7,8)
df <- rbind(df,df,df,df)
Run Code Online (Sandbox Code Playgroud)

我想要做的是在第一行中定义的data.frame中找到1,2,3与4,5,6的chisq.test的p.value.

让我们试试吧:

chisq.test(c(1,2,3),c(4,5,6))$p.value ## this works.
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过调用列/行来实现它时...

chisq.test(df[1,1:3],df[1,4:6])$p.value
Run Code Online (Sandbox Code Playgroud)

给出:complete.cases(x,y)中的错误:并非所有参数都具有相同的长度

有趣,因为这似乎不是真的:

length(df[1,1:3])
length(df[1,4:6])
Run Code Online (Sandbox Code Playgroud)

有关如何更改符号以获得所需结果的任何想法?

r dataframe

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

标签 统计

r ×4

dataframe ×2

vectorization ×2

quantile ×1

regression ×1