我有一些数据包含 400 多个列和大约 80 个观察值。我想使用 for 循环来遍历每一列,如果它包含所需的 prefix exp_,我想创建一个新列,该新列是该值除以参考列,存储为相同的名称但带有后缀_pp。我还想用其他前缀做一个 else if rev_,但我认为只要我能解决第一个问题,我就可以自己解决剩下的问题。一些示例数据如下:
exp_alpha exp_bravo rev_charlie rev_delta pupils
10 28 38 95 2
24 56 39 24 5
94 50 95 45 3
15 93 72 83 9
72 66 10 12 3
Run Code Online (Sandbox Code Playgroud)
我第一次尝试时,循环正确运行,但只存储 if 语句为 true 的最后一列,而不是存储 if 语句为 true 的每一列。我做了一些调整并丢失了该代码,但现在它运行没有错误,但根本不修改数据帧。
for (i in colnames(test)) {
if(grepl("exp_", colnames(test)[i])) {
test[paste(i,"pp", sep="_")] <- test[i] / test$pupils)
}
}
Run Code Online (Sandbox Code Playgroud)
我对这是做什么的理解:
我通常为每个项目(每个项目持续几周)使用一个 script.R 文件。我想设置一个过程,这样每天当我打开 RStudio 时,我都可以启动一个文件,将我在控制台中看到的所有内容(输入、输出、警告)存储到一个文件中。我还希望它每天创建一个新文件。我已经在这里阅读了一些关于如何做这部分内容的讨论,但我不够聪明,无法自己将所有内容整合在一起。这是我到目前为止所拥有的:
sink(paste("filename.txt", strtrim(Sys.time(),10)), append=T, split=T)
x <- 1:5
y <- 2:6
z <- c(5, 8, 3, 5, 9)
reg <- lm(y ~ x) #intentional "mistake" used to produce a warning
reg <- lm(z ~ x)
summary(reg)
sink()
Run Code Online (Sandbox Code Playgroud)
我认为这会完成什么:如果这是我第一次这样做,我会得到一个日志文件,它将所有输出捕获到一个新文件中,但如果我在 AM 中进行一些工作,则会将其添加到现有文件中,将其全部关闭离开,并在当天晚些时候重新开始。
这不能完成什么:它不捕获输入或警告消息,而且我认为它有点笨拙。
我认为这可以实现我认为的功能是否正确?有没有办法修改这个(或做类似的事情),这将允许我也捕获输入和警告(基本上是控制台中看到的其余部分)?
谢谢!
我正在尝试生成一个图表,并且我想将 .a 字符串的一部分加粗geom_text()。这是一些示例数据和图表:
temp <- data.frame(num = c("big"),
text = c("small bullet point of text"),
col = c("red"))
ggplot(data = temp) +
lims(x = c(0,100), y = c(0, 100)) +
geom_text(aes(x = 20, y = 50, label = num, color = col), size = 25) +
geom_text(aes(x = 60, y = 50, label = text), size = 3)
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想做两件事。首先,最重要的是,我想给“子弹”这个词加气,而且只用那个词。其次,如果可能的话,我想将 Bullet 一词的颜色更改为 "red" ,以匹配 "big" 一词的颜色。
我在这里阅读了涉及bold()似乎来自grDevices包的功能的解决方案,但我无法让它工作。当我尝试该链接中的示例时,它会出现以下错误:
> paste("No. of ", bold("bacteria X"), …Run Code Online (Sandbox Code Playgroud)