小编Rei*_*son的帖子

使用row,col指示的矩阵的索引值

这可能很容易解决.我有一个mat500行×335列的2D矩阵和一个dat120425行的data.frame.该data.frame dat有两列IJ,它是整数索引的行,列的mat.我想将值添加mat到行的行中dat.

这是我的概念失败:

> dat$matval <- mat[dat$I, dat$J]
Error: cannot allocate vector of length 1617278737
Run Code Online (Sandbox Code Playgroud)

(我在Win32上使用R 2.13.1).深入挖掘,我发现我误用了矩阵索引,因为看起来我只得到了一个子矩阵mat,而不是我预期的单维数组值,即:

> str(mat[dat$I[1:100], dat$J[1:100]])
 int [1:100, 1:100] 20 1 1 1 20 1 1 1 1 1 ...
Run Code Online (Sandbox Code Playgroud)

我期待着类似的东西int [1:100] 20 1 1 1 20 1 1 1 1 1 ....使用行,列索引索引2D矩阵以获取值的正确方法是什么?

indexing r matrix r-faq

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

如何不将数字显示为指数?

我看到很多关于如何更改R中的小数精度的文章.但是有没有办法让R显示整数而不是显示类似的东西9e+08

r

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

将保持第一列的数据帧转换为标题

我有一个很大的数据帧,但小例子是这样的:

mydf <- data.frame(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50))
Run Code Online (Sandbox Code Playgroud)

我想转置数据帧并将列1(A)保持为列标题(字母[1:10])作为变量名称.以下是不成功代码的临时试验.

tmydf = data.frame(t(mydf))
names(tmydf) <- tmydf[1,]
Run Code Online (Sandbox Code Playgroud)

谢谢;

transpose r dataframe

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

加速大型数据集的plot()函数

我使用plot()超过1百万个数据点,结果非常慢.

有没有办法提高速度,包括编程和硬件解决方案(更多内存,图形卡......)?

存储数据在哪里存储?

plot r

23
推荐指数
2
解决办法
9543
查看次数

y轴标签落在图形窗口外?

我尝试在R中绘制一些数据,y轴标签水平,y轴刻度标签左边.我认为下面的代码可行:

set.seed(1)
n.obs       <- 390
vol.min     <- .20/sqrt(252 * 390)
eps         <- rnorm(n = n.obs, sd = vol.min)
mar.default <- c(5,4,4,2) + 0.1
par(mar = mar.default + c(0, 4, 0, 0))               # add space to LHS of plot
pdf("~/myplot.pdf", width=5.05, height=3.8)
plot(eps,  main  =  "Hello  World!", las=1, ylab="") # suppress the y-axis label
mtext(text="eps", side=2, line=4, las=1)             # add horiz y-axis label
                                                     # 4 lines into the margin
Run Code Online (Sandbox Code Playgroud)

我的形象

相反,正如您所看到的,y轴标签几乎完全落在图形窗口之外.无论我扩大LHS边际多少,这种现象仍然存在.

问:我做错了什么?我需要对oma参数做些什么吗?我需要做什么来按照我的意图来绘制事物?所有这些让我有点不知所措!

plot r

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

如何定义S4类的子集运算符?

我无法找出正确的方式来定义的[,$[[子集运营商的S4类.

任何人都可以为我提供一个为S4类定义这三个的基本示例吗?

oop r subset s4

22
推荐指数
2
解决办法
6560
查看次数

为矢量条目指定名称而不为矢量指定变量名称?

在R中,是否可以在不首先将该向量分配给变量名的情况下为向量的组件指定名称?通常的方法很明显:

z <- 1:3
names(z) <- c("a", "b", "c") #normal way
names(1:3) <- c("a", "b", "c") #throws an error
Run Code Online (Sandbox Code Playgroud)

第二种方式抛出"名称错误(1:3)< - c("a","b","c"):赋值目标扩展为非语言对象"

根据文档,表达式被评估为

 z <- "names<-"(z,
     "[<-"(names(z), 3, "c2"))’.
Run Code Online (Sandbox Code Playgroud)

所以没有震惊它不起作用,我只是想知道是否有一个解决方案.

理想情况下,有这样的东西是很好的:

names(z <- 1:3) <- c("a", "b", "c")
> z
a b c 
1 2 3 
Run Code Online (Sandbox Code Playgroud)

只是浪费空间把它放在两条不同的线上.

variables r variable-assignment

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

在R中的稀疏矩阵上运行cor()(或任何变量)

当尝试cor()在稀疏矩阵(dgCMatrix或dgTMatrix类型)上运行该函数时,我收到以下错误:

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

将我的矩阵转换为密集将是非常低效的.有没有一种简单的方法来计算这种相关性(没有所有对循环?).

谢谢,

  • 罗恩

r

21
推荐指数
3
解决办法
9449
查看次数

改变ggplot2中密度图的颜色

我用ggplot2创建了一对漂亮的概率密度函数,如下所示:

require(ggplot2)
set.seed(2)
data <- rbind( data.frame(type="a", lr=rnorm(100)), data.frame(type="b", lr=rnorm(100,.5,1.2)))
m <- ggplot(data, aes(x=lr)) 
m <- m + geom_density(aes(fill=factor(type)), size=2, alpha=.4) 
m
Run Code Online (Sandbox Code Playgroud)

这会产生一个很好的情节:

在此输入图像描述

但是我真的希望那个情节有不同的颜色阴影.我似乎无法弄明白.我认为以下内容可行:

m + scale_colour_manual( values = c("red","blue"))
Run Code Online (Sandbox Code Playgroud)

但没有运气.我也尝试将填充颜色传递给geom_density()调用,但无济于事.

如何更改填充颜色?

r ggplot2

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

如何让geom_vline尊重facet_wrap?

我已经四处寻找,但一直无法找到答案.我想做一个加权的geom_bar图,用垂直线覆盖,显示每个面的整体加权平均值.我无法做到这一点.垂直线似乎是应用于所有方面的单个值.

require('ggplot2')
require('plyr')

# data vectors
panel <- c("A","A","A","A","A","A","B","B","B","B","B","B","B","B","B","B")
instrument <-c("V1","V2","V1","V1","V1","V2","V1","V1","V2","V1","V1","V2","V1","V1","V2","V1")
cost <- c(1,4,1.5,1,4,4,1,2,1.5,1,2,1.5,2,1.5,1,2)
sensitivity <- c(3,5,2,5,5,1,1,2,3,4,3,2,1,3,1,2)

# put an initial data frame together
mydata <- data.frame(panel, instrument, cost, sensitivity)

# add a "contribution to" vector to the data frame: contribution of each instrument
# to the panel's weighted average sensitivity.
myfunc <- function(cost, sensitivity) {
  return(cost*sensitivity/sum(cost))
}
mydata <- ddply(mydata, .(panel), transform, contrib=myfunc(cost, sensitivity))

# two views of each panels weighted average; should be the same numbers either way …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

21
推荐指数
2
解决办法
8103
查看次数

标签 统计

r ×10

ggplot2 ×2

plot ×2

dataframe ×1

indexing ×1

matrix ×1

oop ×1

r-faq ×1

s4 ×1

subset ×1

transpose ×1

variable-assignment ×1

variables ×1