小编Jil*_*ina的帖子

为什么r中的滞后不适用于矩阵?

我试图滞后矩阵:

> B = matrix( c(2, 4, 3, 1, 5, 7),  nrow=3, ncol=2)
> B
     [,1] [,2]
[1,]    2    1
[2,]    4    5
[3,]    3    7
> lag(B)
     [,1] [,2]
[1,]    2    1
[2,]    4    5
[3,]    3    7
Run Code Online (Sandbox Code Playgroud)

为什么不lag(B)给:

> lag(B)
     [,1] [,2]
[1,]    0    0
[2,]    2    1
[3,]    4    5
Run Code Online (Sandbox Code Playgroud)

r lag

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

使用rm()从父环境中删除对象

我试图从父环境中删除一个对象.

rm_obj <- function(obj){
  a <-deparse(substitute(obj))
  print (a)
  print(ls(envir=sys.frame(-1)))  
  rm(a,envir=sys.frame(-1))
}
> x<-c(1,2,3)
> rm_obj(x)
[1] "x"

[1] "rm_obj" "x"    
Warning message:
In rm(a, envir = sys.frame(-1)) : object 'a' not found
Run Code Online (Sandbox Code Playgroud)

这将有助于澄清我对框架的误解.

r

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

如何计算R中每组的初始值的差异?

我在R中安排了这样的数据:

indv    time    val
A          6    5
A         10    10
A         12    7
B          8    4
B         10    3
B         15    9
Run Code Online (Sandbox Code Playgroud)

对于每次每个人(indv),我想val从初始时间计算值()的变化.所以我最终得到这样的东西:

indv time   val val_1   val_change
A       6     5    5       0
A      10    10    5       5
A      12     7    5       2
B       8     4    4       0
B      10     3    4      -1
B      15     9    4       5
Run Code Online (Sandbox Code Playgroud)

有人能告诉我怎么做这个吗?我可以用

ddply(df, .(indv), function(x)x[which.min(x$time), ])
Run Code Online (Sandbox Code Playgroud)

得到一张像这样的桌子

indv    time    val
A          6    5   
B          8    4   
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何制作一个列val_1,其中每个人的最小值匹配.但是,如果我可以这样做,我应该可以 …

r

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

仅显示多个t.tests的p值

我有

replicate(1000, t.test(rnorm(10)))

它的作用是从正态分布中抽取10号样本,对其执行一次t.test,并执行1000次.但对于我的任务,我只对p值感兴趣(问题是:零假设被拒绝了多少次).我如何仅获得p值,或者我可以添加已经说明零假设被拒绝多少次的内容(p值小于0.05的次数)

r sample

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

热图中的错误.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 3.0.+中使用.Call()时出错

我正在尝试使用一种功能,使用逻辑曝光链接功能模拟鸟类的嵌套成功.

当我使用R 3.0.0或3.0.1中的上面的示例代码运行此函数时,我收到错误:

Error in .Call("logit_mu_eta", eta, PACKAGE = "stats") : 
  "logit_mu_eta" not available for .Call() for package "stats"
Run Code Online (Sandbox Code Playgroud)

但是,它在R 2.15.3中工作正常.

我希望这可以在更新版本的R中使用,因为我使用它们来进一步分析输出.如果有人有任何建议,解决方法或更正,我很乐意尝试.

r

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

`rowname`-一个矩阵列表

假设我有一个Tables使用colnames调用并且没有rownames 的矩阵列表.

 Tables <- list(structure(c(0.810145949194718, 0.0792559803788517, 0.189854050805282, 
0.920744019621148), .Dim = c(2L, 2L), .Dimnames = list(NULL, 
    c("e", "prod"))), structure(c(0.949326264941026, 0.24010922539329, 
0.0506737350589744, 0.75989077460671), .Dim = c(2L, 2L), .Dimnames = list(
    NULL, c("prod", "e"))))
Run Code Online (Sandbox Code Playgroud)

我希望rownames与colnames相同:

rownames(Tables[[1]])<- colnames(Tables[[1]])
rownames(Tables[[2]])<- colnames(Tables[[2]])
Run Code Online (Sandbox Code Playgroud)

我尝试过使用但lapply没有成功

lapply(Tables, function(x) rownames(x) <- colnames(x))
Run Code Online (Sandbox Code Playgroud)

我设法使用for循环

for(i in 1:length(Tables)){
  rownames(Tables[[i]])<- colnames(Tables[[i]])
}

Tables # Expected result
[[1]]
              e      prod
e    0.81014595 0.1898541
prod 0.07925598 0.9207440

[[2]]
          prod          e
prod 0.9493263 0.05067374
e    0.2401092 0.75989077
Run Code Online (Sandbox Code Playgroud)

尽管如此,我想找到一种方法来使用*applybase中的任何或任何其他函数来避免 …

r rowname

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

关于 R 中的 PCA?

我在 R 中使用插入符包来预处理数据,例如:

> trans <- preProcess(data, method  = "pca").
> transformedData <- predict(trans, data)
Run Code Online (Sandbox Code Playgroud)

这是我的问题,之后原始数据上的预测器名称丢失了,但缺少了 PC 列表。我怎样才能找到这些 PC 与我的原始预测变量之间的关系,你知道,这些预测变量上有一些负载或系数。

有人可以给我一个提示,更好地使用插入符号方法吗?谢谢!

r pca

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

RODBC:合并来自不同数据库的表(频道)

我正在使用RODBC软件包从R连接到Oracle数据库但是我没有成功地合并来自不同数据库的表而没有"下载"表格(我不想下载它们因为它们太大了!).我想使用类似的东西:

DBa=odbcConnect(dsn="DatabaseA",uid="uid",pwd="pwd",readOnly="True")
DBb=odbcConnect(dsn="DatabaseB",uid="uid",pwd="pwd",readOnly="True")
sqldf("select a.year, sum(b.var) as sumVar
       from sqlFetch(DBa,'tableA') a
            sqlFetch(DBb,'tableB') b
       where a.ID=b.ID
       group by a.year")
Run Code Online (Sandbox Code Playgroud)

如果有人有想法,那将非常有帮助!提前谢谢了.

莱昂内尔

sql r rodbc sqldf

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

标签 统计

r ×10

heatmap ×1

lag ×1

lapply ×1

matrix ×1

pca ×1

rodbc ×1

rowname ×1

sample ×1

sql ×1

sqldf ×1