library(nlme)
mydat <-
structure(list(class = c(91L, 91L, 91L, 91L, 91L, 91L, 92L, 92L,
92L, 92L, 92L, 92L, 92L, 92L, 92L, 92L, 92L, 92L, 92L, 92L, 92L,
92L, 93L, 93L, 93L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L, 94L,
94L, 94L, 94L, 94L, 95L, 95L, 95L, 95L, 95L, 95L, 95L, 95L, 95L,
95L, 95L, 95L), days = c(5.7, 11.1, 13.9, 15.3, 18.3, 18.9, 1.9,
2.1, 2.9, 3.4, 4.4, 5, 6.9, 10.4, 11.6, 13, 13.4, 15.7, 15.9,
17.3, 17.7, 19.4, 2.3, …Run Code Online (Sandbox Code Playgroud) library(nlme)
model <- nlme(height ~ (R0) + 1,
data = Loblolly,
fixed = list(R0 ~ 1),
random = list(Seed = pdDiag(list(R0 ~ 1))),
start = list(fixed = c(R0 = -8.5)))
Run Code Online (Sandbox Code Playgroud)
这是一个只有1个固定效果参数的简单模型.这个模型很合适,但是当我想引入因子水平协变量(即年龄)时,我遇到了以下错误.
Loblolly$age2 <- as.factor(ifelse(Loblolly$age < 12.5, 0, 1))
model2 <- nlme(height ~ (R0 + age2) + 1,
data = Loblolly,
fixed = list(R0 ~ 1 + (age2)),
random = list(Seed = pdDiag(list(R0 ~ 1))),
start = list(fixed = c(R0 = -8.5, age2 = 1)))
Error in chol.default((value + t(value))/2) : …Run Code Online (Sandbox Code Playgroud) 我想NULL在我的 data.frame 中包含值(而不是NA)。而以下似乎不起作用。
> data.frame(x = c(1, 2, 3), y = c(NULL, NULL, NULL))
Error in data.frame(x = c(1, 2, 3), y = c(NULL, NULL, NULL)) :
arguments imply differing number of rows: 3, 0
Run Code Online (Sandbox Code Playgroud)
我的目标是将 data.frame 输出到 .csv 文件中,并且包含NULL值的单元格应该为空白。
library(tidyverse)
library(ggplot2)
library(ggstance)
dat <- structure(list(Gender = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Female", "Male"
), class = "factor"), Status = c("Case", "Case", "Case", "Case",
"Control", "Control", "Control", "Control", "Case", "Case", "Case",
"Case", "Control", "Control", "Control", "Control"), Type = c("Age30",
"Age30", "Age30", "Age30", "Age30", "Age30", "Age30", "Age30",
"Age50", "Age50", "Age50", "Age50", "Age50", "Age50", "Age50",
"Age50"), Risk = c(21.59862, 3.27479, 1.10073, 1.70754, 8.85253,
1.66318, 0.23228, 0.44844, 18.01182, 3.80135, 1.40662, …Run Code Online (Sandbox Code Playgroud) mat <- diag(3)
> mat
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
Run Code Online (Sandbox Code Playgroud)
我有一个矩阵,对角线上为 1,其他位置为 0。我想用 0.3 替换 0,所以矩阵看起来像
> mat
[,1] [,2] [,3]
[1,] 1 0.3 0.3
[2,] 0.3 1 0.3
[3,] 0.3 0.3 1
Run Code Online (Sandbox Code Playgroud)
有什么快速方法可以做到这一点?
string = c("Hello-", "HelloA", "Helloa")
grep("Hello$[A-z]", string)
Run Code Online (Sandbox Code Playgroud)
我希望找到字符串的索引,其中单词"Hello"之后的下一个字符是一个字母(不区分大小写).上面的代码不起作用,但我希望grep()返回索引2和3,因为这些单词在"Hello"之后有一个字母
所以我有一个数据集,只需查看它,数据集中就有明显的 NA。
> dput(bmi.cig)
structure(list(MSI.subset.BMI = structure(c(4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 1L, 2L, 3L, 3L, 1L, 3L, 3L, 1L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("0", "1", "2",
"NA"), class = "factor"), MSI.subset.Cigarette = structure(c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 1L, 2L, 1L, 2L,
2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("1", …Run Code Online (Sandbox Code Playgroud) > data = data.frame(a = c(100, -99, 322, 155, 256), b = c(23, 11, 25, 25, -999))
> data
a b
1 100 23
2 -99 11
3 322 25
4 155 25
5 256 -999
Run Code Online (Sandbox Code Playgroud)
对于这样的data.frame,我想删除包含-99或-999的任何行.所以我生成的data.frame应该只包含第1,3和4行.
我正在考虑为此编写一个循环,但我希望有一个更简单的方法.(如果我的data.frame要有列az,那么循环方法将非常笨重).我的循环可能看起来像这样
i = 1
for(i in 1:nrow(data)){
if(data$a[i] < 0){
data = data[-i,]
}else if(data$b[i] < 0){
data = data[-i,]
}else data = data
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用legendR 中的函数。我希望标签读取 $\alpha = 1, \beta = 2$,所以我尝试使用
legend("topleft", c(expression(alpha = 1, beta = 2)))
Run Code Online (Sandbox Code Playgroud)
但这并没有达到目的。有什么建议吗?
如果我希望我的标签显示为 $Gamma(\alpha = 1, \beta = 2)$ 该怎么办?我试过
legend("topleft", c(paste("Gamma( ", expression(alpha = 1, beta = 2))))
Run Code Online (Sandbox Code Playgroud) vec <- c(1, 3, 2, 37)
Run Code Online (Sandbox Code Playgroud)
我想连续连接这个向量,使得输出看起来像这样:
> output
[[1]]
[1] 1
[[2]]
[1] 1 3
[[3]]
[1] 1 3 2
[[4]]
[1] 1 3 2 37
Run Code Online (Sandbox Code Playgroud)
我编写了一个函数来执行此操作,但它没有给我正确的输出:
myfun <- function(vec){
output = vector("list", length(vec))
output[[1]] = vec[1]
for(i in 2:length(vec)){
output[[i]] = paste(output[[i - 1]], vec[i])
output[[i]] = as.numeric(strsplit(output[[i]], " ")[[1]])
}
return(output)
}
> myfun(c(1, 3, 2, 37))
[[1]]
[1] 1
[[2]]
[1] 1 3
[[3]]
[1] 1 2
[[4]]
[1] 1 37
Run Code Online (Sandbox Code Playgroud)