小编Jil*_*ina的帖子

数据丢失滞后

我有关于州级别批准评级的数据集.我需要将其中一个变量滞后两年.

数据是年度的,跨越1970年至2008年.显然,如果我滞后数据,我将失去一些观察(即:1970年将无法找到1968年的数据)我很好地失去了那些观察,但是diff命令当我试图滞后时返回错误.

但是,当我运行滞后时,我得到以下错误:替换与数​​据不匹配:

> df$lagvar <- diff(df$var, lag=2)
Error in `$<-.data.frame`(`*tmp*`, "lagvar", value = c(-0.4262501,  : 
replacement has 230 rows, data has 232
Run Code Online (Sandbox Code Playgroud)

我四处寻找,但无法找到解决方案.关于如何解决这个问题的任何想法?

diff r missing-data

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

根据另一个数据框替换数据帧中的值

我有以下两个数据帧:

>df1<-data.frame(A=c(0,0,0),B=c(0,201,0),C=c(0,467,0))
  A   B   C
1 0   0   1
2 0 201 467
3 0   0   0

>df2<-data.frame(A=c(201,467),B=c('abc','def'))
    A   B
1 201 abc
2 467 def
Run Code Online (Sandbox Code Playgroud)

我想用df2中匹配的"B"值替换df1中的值,创建一个如下所示的数据帧:

   A   B   C
1 NA  NA  NA
2 NA abc def
3 NA  NA  NA
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码逐列完成此操作:

>df2$B[match(df1$B,df2$A)]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我正在使用大量数据集,因此希望一次匹配所有列.任何帮助将非常感激.

r

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

热图中的错误.2(gplots)

我已经转移到一个新的服务器和安装R版本3.0上.(gplots库不再适用于2.14)

使用适用于版本2.14的脚本,我现在遇到生成热图的问题.

在R版本3中,我收到一个错误:

Error in lapply(args, is.character) : node stack overflow
Error in dev.flush() : node stack overflow
Error in par(op) : node stack overflow
Run Code Online (Sandbox Code Playgroud)

在R版本2.14中,我收到一个错误:

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Run Code Online (Sandbox Code Playgroud)

我可以通过增加选项(表达式= 500000)来解决

在R版本3中,增加此选项无法解决问题.我仍然坚持同样的错误.

两个脚本都是相同的:

y=read.table("test", row.names=1, sep="\t", header=TRUE)
hr <- hclust(dist(as.matrix(y)))
hc <- hclust(dist(as.matrix(t(y))))
mycl <- cutree(hr, k=7); mycolhc <- rainbow(length(unique(mycl)), start=0.1, end=0.9); mycolhc     <- mycolhc[as.vector(mycl)] 

install.packages("gplots")
library("gplots", character.only=TRUE)
myheatcol <- redgreen(75)

pdf("heatmap.pdf")
heatmap.2(as.matrix(y), Rowv=as.dendrogram(hr), Colv=as.dendrogram(hc), col=myheatcol,scale="none", density.info="none", trace="none", RowSideColors=mycolhc, labRow=FALSE)
dev.off()
Run Code Online (Sandbox Code Playgroud)

其中"test"是带有标题和行名称以及40*5000 0/1矩阵的tdl文件

任何帮助,将不胜感激 …

r heatmap lapply

5
推荐指数
2
解决办法
6196
查看次数

如何从矩阵的列构造函数调用pmax

我想用来pmax计算矩阵的行方式最大值A:

A = matrix(sample(1:20),10,2)
pmax(A[,1],A[,2])
Run Code Online (Sandbox Code Playgroud)

这很好用.但问题是我不知道A的大小,所以调用pmax应该能够按列拆分矩阵并将每列作为参数提供.怎么做?例如,我可能在下一个例子中有

A = matrix(sample(1:20),5,4)
Run Code Online (Sandbox Code Playgroud)

但我不想每次都要手工改写

pmax(A[,1],A[,2],A[,3],A[,4])
Run Code Online (Sandbox Code Playgroud)

事实上,我不能因为A程序开始之前的大小是未知的.

r matrix

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

在 R 中绘制圆圈

我正在使用 plotrix 包来绘制圆圈。

而且我不明白我的代码有什么问题...... :-(

我有三分。第一个点(1,1)应该是圆的中心。以下两点(1,4),并(4,1)具有相同的距离/半径的中心。所以图中的圆圈应该经过这些点,对吧?

而且我不知道为什么圆圈看起来不对。有解释吗?

  p1 <- c(1,1)
  p2 <- c(4,1)
  p3 <- c(1,4)
  r <- sqrt(sum((p1-p2)^2))

  plot(x=c(p1[1], p2[1], p3[1]),
       y=c(p1[2], p2[2], p3[2]), 
       ylim=c(-5,5), xlim=c(-5,5))
  draw.circle(x=p1[1], y=p1[2], radius=(r))
  abline(v=-5:5, col="#0000FF66")
  abline(h=-5:5, col="#0000FF66")
Run Code Online (Sandbox Code Playgroud)

这里查看生成的输出

plot r plotrix

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

R中的秩相关矩阵

在给定具有多列的数据框的情况下,如何在R中以优雅的方式生成秩相关矩阵?我找不到内置函数,所以我尝试了

> test=data.frame(x=c(1,2,3,4,5), y=c(5,4,3,2,1))
> cor(rank(test))
Run Code Online (Sandbox Code Playgroud)

(为简单起见,只有2列,实际数据有5列)

> Error in cor(rank(test)) : supply both 'x' and 'y' or a matrix-like 'x'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为rank需要一个向量.所以我试过了

> cor(lapply(test,rank))
Run Code Online (Sandbox Code Playgroud)

获取应用于数据框中每列的等级,将数据框视为列表,从而产生错误

> supply both 'x' and 'y' or a matrix-like 'x'
Run Code Online (Sandbox Code Playgroud)

我终于得到了一些合作的东西

> cor(data.frame(lapply(test,rank)))
   x  y
x  1 -1
y -1  1
Run Code Online (Sandbox Code Playgroud)

然而,这似乎相当冗长和丑陋.我认为必须有更好的方法 - 如果是这样的话?

r

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

根据参考矩阵中的列、行名称用 0 ins 对称矩阵替换值

正如标题所述,我需要根据另一个矩阵 (B) 中给出的列和行名称,将对称矩阵 (A) 中的值替换为 0。例如,

A <-matrix(c(0,1,2,3,4,1,0,1,2,3,2,1,0,1,2,3,2,1,0,3,4,3,2,3,0), 5)
colnames(A) <- rownames(A) <-c(LETTERS[1:5])
A

    A B C D E
  A 0 1 2 3 4
  B 1 0 1 2 3
  C 2 1 0 1 2
  D 3 2 1 0 3
  E 4 3 2 3 0

B <- matrix(c("A","B","C","B","D","E","E","C"),4)

B      #reference matrix

     [,1] [,2]
 [1,] "A"  "D" 
 [2,] "B"  "E" 
 [3,] "C"  "E" 
 [4,] "B"  "C"
Run Code Online (Sandbox Code Playgroud)

我试过

A[B[,1],B[,2]]<-0 #for the above-diagonal half but it didn't work as …
Run Code Online (Sandbox Code Playgroud)

r matrix

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

如何在R中乘以(平方,除法等)单个列

print(elasticband)
strech distance tension
1     67      148       5
2     98      120      10
3     34      173      15
4     50       60      20
5     45      263      25
6     42      141      30
7     89      166      35
Run Code Online (Sandbox Code Playgroud)

所以我有这个数据框,我希望能够改变单个列(例如,在张力列中对所有内容进行平方)而不影响其他像弹性带**2

有小费吗?

PS我对此并不太擅长,所以修复越简单越好

r

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

表达与调用

表达式和调用有什么区别?

例如:

func <- expression(2*x*y + x^2)
funcDx <- D(func, 'x')
Run Code Online (Sandbox Code Playgroud)

然后:

> class(func)
[1] "expression"
> class(funcDx)
[1] "call"
Run Code Online (Sandbox Code Playgroud)

eval使用环境列表调用对它们都有效。但是我很好奇这两个类有什么区别,在什么情况下我应该使用表达式或调用。

expression r call

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

optim函数参数缺失

这是我的代码.该kum.loglik函数返回负对数似然,并采用两个参数a和b.我需要找到一个使用optim函数最小化此函数的a和b.(n1,n2,n3是预先指定的并传递给optim函数.

kum.loglik = function(a, b, n1, n2, n3) {
  loglik = n1*log(b*beta(1+2/a,b)) + n2 * log(b*beta(1+2/a,b)-2*b*beta(1+1/a,b)+1) +
    n3 * log(b*beta(1+1/a,b)-b*beta(1+2/a,b))
  return(-loglik)
}
optim(par=c(1,1), kum.loglik, method="L-BFGS-B",
      n1=n1, n2=n2, n3=n3,
      control=list(ndeps=c(5e-4,5e-4)))
Run Code Online (Sandbox Code Playgroud)

此代码应该可以正常工作但它会给出错误消息

Error in b * beta(1 + 2/a, b) : 'b' is missing
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

optimization r

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

标签 统计

r ×10

matrix ×2

call ×1

diff ×1

expression ×1

heatmap ×1

lapply ×1

missing-data ×1

optimization ×1

plot ×1

plotrix ×1