小编Jil*_*ina的帖子

在R中保存几个pdf文件时出现问题

我正在尝试保存在R中使用"for"循环创建的几个xyplots,如果我执行以下循环,我将无法获得完整的pdf文件(所有文件具有相同的大小,我无法打开它们):

for (i in 1:length(gases.names)) {
   # Set ylim;
   r_y <- round(range(ratio.cal[,i][ratio.cal[,i]<999], na.rm = T), digits = 1);
   r_y <- c(r_y[1]-0.1, r_y[2]+0.1);

   outputfile <- paste (path, "/cal_ratio_",gases.names[i], ".pdf", sep="");
   dev.new();
   xyplot(ratio.cal[,i] ~ data.GC.all$data.time, groups = data.vial, panel = 
      panel.superpose, xlab = "Date", ylab = gases.names[i], xaxt="n", ylim = r_y);
   savePlot(filename = outputfile, type = 'pdf', device = dev.cur());
   dev.off();
}
Run Code Online (Sandbox Code Playgroud)

(以前的版本使用trellis.device()而不是dev.new() + savePlot())

你知道为什么我不能得到好的PDF文件吗?如果我"手动"它,它的工作原理......任何想法?

pdf r save

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

提示在嵌套for循环中提高性能?

在仅使用整数填充的100x100矩阵中,我在每行中以(包括)元素1,1开始进行成对比较.对于任何为TRUE的比较,我在另一个预分配矩阵[x]中的相应元素上计算+1(这只是一个相似性矩阵).

使用嵌套for循环,此操作需要每行进行N*(N-1)/ 2 + N比较.在我的机器上,下面的代码不需要太长时间,但是有更好的(好的,更快的,更优雅的)方式吗?我已经考虑使用"应用"进行矢量化计算,但到目前为止,没有任何乐趣.

result <- matrix( round(rnorm(10000,sample(5))), ncol=100)
x <-matrix(data=0, nrow=100,ncol=100)

system.time(
for (i in 1:100) {
  for (j in 1:100) {
    for (k in j:100) {
        if (result[i,][j] == result[i,][k]) {
        x[j,][k] = x[j,][k] + 1
        }
    }
  }
}
)
user  system elapsed
6.586   0.599   7.192
Run Code Online (Sandbox Code Playgroud)

这是一个小例子:

"结果"矩阵

      [,1] [,2] [,3] [,4]
[1,]    1    6    1    1
[2,]    6    1    5    3
[3,]    1    5    4    4
[4,]    2    3    4    2

structure(c(1, 6, 1, 2, …
Run Code Online (Sandbox Code Playgroud)

r

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

将多个图表和数据面板导出到*.png(在样式布局()中可以在R中工作)

我正在尝试使用.png设备或.pdf设备导出多个数据面板和1个绘图作为单个图像,我没有取得任何成功.我可以使用R本机绘图设备在R中生成我想要的图像,但是当我尝试直接生成相同的图像时,我得到的结果是我没想到的.

这是我的示例代码

testMat <- matrix(1:20, ncol = 5)##  create data
testMatDF <- as.data.frame(testMat)
names(testMatDF) <- c("Hey there", "Column 2", 
         "Some * Symbols", "And ^ More", 
         "Final Column")
rownames(testMatDF) <- paste("Group", 1:4)

library(gplots) ##  gplots needed for textplot()
layout(matrix(c(1, 1, 2, 3, 3, 3),  2, 3, byrow = TRUE))
curve(dnorm, -3, 4)
textplot(testMat)
textplot(testMatDF)
##  produces what I want within R

layout(matrix(c(1, 1, 2, 3, 3, 3),  2, 3, byrow = TRUE))
png(file='plot1.png')
curve(dnorm, -3, 4)
textplot(testMat)
textplot(testMatDF)
dev.off()
##  only …
Run Code Online (Sandbox Code Playgroud)

plot r

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

基于指标的条件总和

我有一个这样的数据框:

   A   B   Ind
1 10   8     1
2  9  10     2
3  7   1     2
4 19  20     1
5  .   .     .
Run Code Online (Sandbox Code Playgroud)

如何根据Ind值对列进行求和?如果Ind==1,则从列总和A,if Ind==2,列总和B.例如,前4行的输出应为10+10+1+19=30,其中前10行为A,第二行为10 B,第三行为1 B,第四行为19 A.

r sum data-manipulation

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

将嵌套列表转换为列表

我有一个简短的问题,我想取消这个嵌套列表的嵌套:

mylist <- list(a = list(A=1, B=5), 
               b = list(C= 1, D = 2), 
               c = list(E = 1, F = 3))
Run Code Online (Sandbox Code Playgroud)

预期结果是:

> list(a=c(1, 5), b = c(1, 2), c = c(1, 3))
$a
[1] 1 5

$b
[1] 1 2

$c
[1] 1 3
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

时间

r

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

从uni-dimensional data.frame中删除行并将其保留为data.frame

出于实现原因,在某些情况下,我有一个只包含一个列的data.frame

df=as.data.frame(alpha=1:15)
Run Code Online (Sandbox Code Playgroud)

如果我现在使用

df[-1, ]
Run Code Online (Sandbox Code Playgroud)

它返回一个向量,但我想将它保存为data.frame.有什么建议?

PS:列的名称包含信息,因此我必须保留它.

r

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

如何创建数字循环?

我正在使用R,并想知道是否有人可以帮助我.我想转换这个向量:

y<-c(1,1,1,1,2,2,3,3,3,4,4,4)
Run Code Online (Sandbox Code Playgroud)

y<-c(1,2,3,4,1,2,1,2,3,1,2,3)
Run Code Online (Sandbox Code Playgroud)

所以我可以做到以下几点:

v<-c(rep("a",4), rep("b",2), rep("c",3), rep("d",3)) 
paste (v, y, sep="")
[1] "a1" "a2" "a3" "a4" "b1" "b2" "c1" "c2" "c3" "d1" "d2" "d3"
Run Code Online (Sandbox Code Playgroud)

r vector

3
推荐指数
2
解决办法
274
查看次数

将角色视为变量

假设我有以下代码

a<-c(1,2,3)
b<-'a'
Run Code Online (Sandbox Code Playgroud)

现在我将'b'中的字符串视为变量'a',当我将其输入到某个函数或操作中时.想象一下"treat.as.variable()"是一个真正的函数,它会这样做:

treat.as.variable(b)+c(1,2,4)
[1] 2 4 7
Run Code Online (Sandbox Code Playgroud)

是否有预定义的这样的功能?或者一般来说这样做的方法?

string variables r character converter

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

将逗号分隔的字符串作为列表传递

说我有一个字符串,如"x = 1, y = 'cat', z = NULL".我想获取代码创建的列表list(x = 1, z = 'cat', z = NULL).这是我的第一次尝试,我知道这很可怕:

parse_text <- function(x) parse(text = x)[[1]]
strsplit2 <- function(x, ...) strsplit(x, ...)[[1]] 
trim_whitespace <- function (x) gsub("^\\s+|\\s+$", "", x)

# take 1

x <- "nk = 1, ncross = 1, pmethod = 'backward'"
x <- strsplit2(x, ",")
xs <- lapply(x, strsplit2, "=")
keys <- lapply(xs, function(x) trim_whitespace(x[1]))
vals <- lapply(xs, function(x) parse_text(x[2]))

setNames(vals, keys)
Run Code Online (Sandbox Code Playgroud)

这就是我想象的一种更规范的方法:

# take …
Run Code Online (Sandbox Code Playgroud)

r

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

如何将字符类更改为数字类?

我有一个这样的变量:

勇气
3.554,34
56,34

但它的类是“字符”,当我编码时:

gastosbolsonaro <- gastosbolsonaro %>% mutate(VALOR = as.numeric(VALOR))
Run Code Online (Sandbox Code Playgroud)

发生这样的事:

Problem while computing `VALOR = as.numeric(as.character(VALOR))`.
i NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

所有值都变为 NA。

我想将超值货币更改为数字类别

r class

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

标签 统计

r ×10

character ×1

class ×1

converter ×1

data-manipulation ×1

pdf ×1

plot ×1

save ×1

string ×1

sum ×1

variables ×1

vector ×1