我已经阅读了一些关于tryCatch和cuzzins的其他SO问题,以及文档:
但我还是不明白.
我正在运行一个循环,next如果发生任何一种错误,我想跳过:
for (i in 1:39487) {
# EXCEPTION HANDLING
this.could.go.wrong <- tryCatch(
attemptsomething(),
error=function(e) next
)
so.could.this <- tryCatch(
doesthisfail(),
error=function(e) next
)
catch.all.errors <- function() { this.could.go.wrong; so.could.this; }
catch.all.errors;
#REAL WORK
useful(i); fun(i); good(i);
} #end for
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,没有next我能找到的文件)
当我跑步时,R鸣喇叭:
Error in value[[3L]](cond) : no loop for break/next, jumping to top level
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么基本点?这tryCatch显然是在for循环中,所以为什么不R知道呢?
我经常想做以下几点:
mat <- matrix(0,nrow=10,ncol=1)
lapply(1:10, function(i) { mat[i,] <- rnorm(1,mean=i)})
Run Code Online (Sandbox Code Playgroud)
但是,我希望mat里面会有10个随机数,但它有0个.(我并不担心rnorm部分.显然有一种正确的方法可以做到这一点.我担心会影响mat lapply的匿名函数)我可以不从lapply里面影响矩阵垫吗?为什么不?是否有R的范围规则阻止了这个?
我希望能够通过按行和列索引来替换数据框中的值,给定行索引,列名和值的列表.
library(tidyverse)
cols <- sample(letters[1:10], 5)
vals <- sample.int(5)
rows <- sample.int(5)
df <- matrix(rep(0L, times = 50), ncol = 10) %>%
`colnames<-`(letters[1:10]) %>%
as_tibble
Run Code Online (Sandbox Code Playgroud)
我可以通过参数列表上的for循环执行此操作:
items <- list(cols, vals, rows) %>%
pmap(~ list(..3, ..1, ..2))
for (i in items){
df[i[[1]], i[[2]]] <- i[[3]]
}
df
#> # A tibble: 5 x 10
#> a b c d e f g h i j
#> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#> 1 0 0 0 …Run Code Online (Sandbox Code Playgroud) 这里在最近的讨论(如1,2)我现在用在我的一些代码的环境.我的问题是,如何根据参数创建修改环境的函数?例如:
y <- new.env()
with(y, x <- 1)
f <- function(env,z) {
with(env, x+z)
}
f(y,z=1)
Run Code Online (Sandbox Code Playgroud)
投
Error in eval(expr, envir, enclos) : object 'z' not found
Run Code Online (Sandbox Code Playgroud)
我正在使用环境来同时保持两组模拟(没有重构我的代码,我为一组实验编写了代码).
情况1:
rm(list = ls())
foo <- function(x = 6){
set <- function(){
x <- x*x}
set()
x}
foo()
# [1] 6
Run Code Online (Sandbox Code Playgroud)
案例2:
rm(list = ls())
foo <- function(x = 6){
set <- function(){
x <<- x*x}
set()
x}
foo()
# [1] 36
Run Code Online (Sandbox Code Playgroud)
我读到该<<-运算符可用于为与当前环境不同的环境中的对象赋值.它表示<<-可以对不在当前环境中的对象进行对象初始化.我想问一下可以使用哪个环境的对象进行初始化<<-.在我的情况下环境是foo功能环境,可以<<-初始化函数外部的对象或当前环境中的对象吗?完全混淆何时使用<-以及何时使用<<-.
我有这些数据集:A <- 4, B <- 3, C <- 2.
所以我把它们放在一个列表中
D<-list(A,B,C)并想要应用这个函数:
s<-function(x) {
t<-8
x<-as.data.frame(x*t)
}
lapply(D,s)
Run Code Online (Sandbox Code Playgroud)
当我应用该lapply功能时,它只是打印它们.
如何将结果保存在全局环境中而不是打印它们?
因此,结果应为A值32 B,值为24 C,值为16.
可能重复:
你如何在R中使用"<< - "(作用域分配)?
我正在读一个伪代码.我<<-多次遇到这个问题.有什么意义<<-?这是什么意思?在使用<<-运营商时我们需要考虑或注意什么?