基本上,我有以下说法:
counter <- 3
k <- 9999
Run Code Online (Sandbox Code Playgroud)
我想让R打印以下内容:
on the 3rd count: 9999
Run Code Online (Sandbox Code Playgroud)
我应该使用什么命令来执行此操作?请把它拼出来,因为我对R来说是全新的.
我正在使用R生成如何处理我正在教授的统计类的缺失数据的示例.一种方法需要生成"缺失值二进制变量",其中0表示包含缺失值的情况,1表示没有缺失值.例如
n X Y Z
1 4 300 2
2 8 400 4
3 10 500 7
4 18 NA 10
5 20 50 NA
6 NA 1000 5
Run Code Online (Sandbox Code Playgroud)
我想生成一个变量M,这样
n m
1 1
2 1
3 1
4 0
5 0
6 0
Run Code Online (Sandbox Code Playgroud)
考虑到R处理缺失值的能力,这看起来应该很简单.我发现的最接近的是m <-ifelse(is.na(missguns),0,1),但所有这一切都会生成一个新的整个数据矩阵,其中0或1表示缺失.但是,我只想要一个变量来指示行是否包含缺失值.
我有一个可能是一个非常简单的问题.我想从数据帧处理一列POSIXct对象并生成一个datetime字符串向量.我尝试使用以下sapply调用
dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)
但无济于事.我一直收到以下错误:
> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
invalid 'trim' argument
Run Code Online (Sandbox Code Playgroud)
当我将此函数应用于列中的单个POSIXct对象时,我没有问题.关于问题是什么,我现在很难过.我是否需要对POSIXct对象做一些特别的事情?
假设我有一个像这样的数据帧:
df <- data.frame (id = c("a", "b", "a", "c", "e", "d", "e"), n=1:7)
Run Code Online (Sandbox Code Playgroud)
和像这样的id的向量:
v <- c("a", "b")
Run Code Online (Sandbox Code Playgroud)
如何选择与v中的id匹配的数据帧行?我不能将id列用于rownames,因为它们不是唯一的.当我尝试时,我得到:
rownames(df) <- df[["id"]]
Error in `row.names<-.data.frame`(`*tmp*`, value = c(1L, 2L, 1L, 3L, 5L, :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘a’, ‘e’
Run Code Online (Sandbox Code Playgroud) 当我matrix用image函数作为TIFF文件绘制a 时,我经常得到垂直或水平线.
我的矩阵是150000行×2000列,当绘制150000行×100列的矩阵时也会出现这些行.结果是一样的.
线条来自哪里?这是一种像素化的神器吗?我几乎一直都会得到它们.
矩阵看起来像这样:
V999 V1000 V1001 V1002 V1003 V1004 V1005 V1006 V1007 V1008 V1009 V1010
[1,] 1 4 0 0 15 15 15 15 8 0 1 0
[2,] 0 3 12 5 15 15 15 1 15 4 0 2
[3,] 0 0 0 3 6 15 15 15 15 15 0 3
[4,] 3 6 15 15 15 15 15 0 3 15 15 2
[5,] 15 15 15 0 3 15 …Run Code Online (Sandbox Code Playgroud) 我已经完成了类似的问题搜索,我对我应该做什么有一个模糊的想法:矢量化一切或使用apply()家庭.但我是R编程的初学者,上述两种方法都令人困惑.
这是我的源代码:
x<-rlnorm(100,0,1.6)
j=0
k=0
i=0
h=0
lambda<-rep(0,200)
sum1<-rep(0,200)
constjk=0
wj=0
wk=0
for (h in 1:200)
{
lambda[h]=2+h/12.5
N=ceiling(lambda[h]*max(x))
for (j in 0:N)
{
wj=(sum(x<=(j+1)/lambda[h])-sum(x<=j/lambda[h]))/100
for (k in 0:N)
{
constjk=dbinom(k, j + k, 0.5)
wk=(sum(x<=(k+1)/lambda[h])-sum(x<=k/lambda[h]))/100
sum1[h]=sum1[h]+(lambda[h]/2)*constjk*wk*wj
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我解释一下.我想收集200个sum1值(这是第一个循环),并且对于每个sum1值,它是总和(lambda[h]/2)*constjk*wk*wj,因此是其他两个循环.最乏味的是N随h变化,所以我不知道如何对j循环和k循环进行矢量化.但是当然我可以使用lambda<-seq()和矢量化h循环N<-ceiling(),这是我能做的最好的.有没有办法进一步简化代码?
我有一堆栅格(每个物种一个),然后我有一个数据框,其中包含纬度/长列以及物种名称.
fls = list.files(pattern="median")
s <- stack(fls)
df<-c("x","y","species name")
Run Code Online (Sandbox Code Playgroud)
我希望能够一次只选择一个栅格以使用提取功能.我希望选择基于物种名称列的部分匹配.我想这样做是因为栅格名称可能与物种列表中的名称不完全匹配,可能存在大写不匹配或栅格图层名称可能更长,例如"species_name_median",或者可能还有" _"而不是空白.
for(i:length(df.species name))
{
result<-extract(s[[partial match to "species name[i]" ]],df.xy)
}
Run Code Online (Sandbox Code Playgroud)
我希望这是有意义的,我只想一次使用一个栅格进行提取.我可以使用s [[i]]轻松选择单个栅格,但不能保证列表中的每个物种都有其等效的栅格.
我有几个向量的列表.我想检查列表中的所有向量是否相等.有identical这仅适用于两两比较.所以我写了下面这个看起来很丑的函数.我仍然找不到更好的解决方案.这是我的RE:
test_true <- list(a=c(1,2,3),b=c(1,2,3),d=c(1,2,3))
test_false <- list(a=c(1,2,3),b=c(1,2,3),d=c(1,32,13))
compareList <- function(li){
stopifnot(length(li) > 1)
l <- length(li)
res <- lapply(li[-1],function(X,x) identical(X,x),x=li[[1]])
res <- all(unlist(res))
res
}
compareList(test_true)
compareList(test_false)
Run Code Online (Sandbox Code Playgroud)
有什么建议?除了成对比较之外,是否存在相同的本机检查?
我有一个矩阵(其价值class character与此类似:
mat <- matrix(c("0", "TRUE", "1", "2",
"FALSE", "TRUE", "TRUE", "2"), nrow = 4, ncol = 2)
#> mat
# [,1] [,2]
#[1,] "0" "FALSE"
#[2,] "TRUE" "TRUE"
#[3,] "1" "TRUE"
#[4,] "2" "2"
Run Code Online (Sandbox Code Playgroud)
我需要将它转换为这样的矩阵:
[,1] [,2]
[1,] FALSE FALSE
[2,] TRUE TRUE
[3,] TRUE TRUE
[4,] TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
as.logical输出NAs为"字符数字"值,而as.numeric输出NAs为"字符逻辑"值.
我找到了一个解决方案,但我认为我遗漏了一些明显的立即转换:
new_mat2 <- array(as.numeric(mat), dim(mat))
new_mat <- array(as.logical(mat), dim(mat))
new_mat[is.na(new_mat)] <- new_mat2[is.na(new_mat)]
mat2 <- array(as.logical(new_mat), dim(new_mat))
#> mat2
# [,1] …Run Code Online (Sandbox Code Playgroud) 我想用颜色填充散点图上的实心圆点.我试过这个:
> plot(dframe1$TV~dframe1$Books)
> xlab="Number of books read per month"
> plot(dframe1$TV~dframe1$Books,
xlab="Number of books read per month")
> plot(dframe1$TV~dframe1$Books,
xlab="Number of books read per month",
ylab="Hours of TV watched per week",
main="Associations between time spent watching TV and reading",
col.main="red",
cex=1.5,
pch=21,
bg=”light green”)
Error: unexpected input in:
"pch=21,bg=”"
Run Code Online (Sandbox Code Playgroud)
这是行不通的.我很感激建议/帮助.:)
r ×10
comparison ×1
dummy-data ×1
image ×1
lines ×1
matrix ×1
missing-data ×1
nested-loops ×1
plot ×1
posixct ×1
raster ×1
sapply ×1
select ×1
selection ×1
stack ×1
statistics ×1
string ×1
tiff ×1