我正在尝试保存在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文件吗?如果我"手动"它,它的工作原理......任何想法?
在仅使用整数填充的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) 我正在尝试使用.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) 我有一个这样的数据框:
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.
我有一个简短的问题,我想取消这个嵌套列表的嵌套:
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)
有什么建议么?
时间
出于实现原因,在某些情况下,我有一个只包含一个列的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,并想知道是否有人可以帮助我.我想转换这个向量:
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) 假设我有以下代码
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)
是否有预定义的这样的功能?或者一般来说这样做的方法?
说我有一个字符串,如"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) 我有一个这样的变量:
| 勇气 |
|---|
| 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。
我想将超值货币更改为数字类别