我有一个数据框,将瓶号与其卷相关联(key在下面的示例中).我想编写一个函数,它将获取瓶号(samp)的任何列表,并返回瓶容量列表,同时保持瓶号顺序samp.
以下功能正确匹配瓶号和体积,但按瓶号上升对输出进行排序.
我怎样才能保持samp与merge?的顺序?设置sort=FALSE结果为"未指定的顺序".
例
samp <- c(9, 1, 4, 1)
num <- 1:10
vol <- sample(50:100, 10)
key <- data.frame(num, vol)
matchFun <- function(samp, key)
{
out <- merge(as.data.frame(samp), key, by.x="samp", by.y="num")
return(out$vol)
}
Run Code Online (Sandbox Code Playgroud) 为什么stringsAsFactors在R大多数其他命令似乎使用时使用大写字母来帮助提高可读性.(例如as.factor)?
这是我不熟悉的命令的特殊性或更高组织的一部分吗?
有没有办法预测哪些命令将使用大写字母,哪些命令将使用.?
谢谢
我使用Github markdown来记录我的数据分析.当我制作一个情节时,我使用:
jpeg("file_name.jpg")
plot(...)
dev.off()
Run Code Online (Sandbox Code Playgroud)
将绘图保存为jpeg,然后可以嵌入并显示在降价文档中,如下所示:
!(file_name.jpg)
Run Code Online (Sandbox Code Playgroud)
但是,我还需要pdf为最终出版物制作一个情节.目前我再次编写整个绘图代码,pdf("file_name.pdf")但这导致了许多基本上重复的代码.
我已经尝试按顺序放入jpeg和pdf调用,但只生成底部调用.
有没有办法在一次代码运行期间从同一代码生成jpeg和pdf文件?
我正在使用plot()R 中的因子绘制连续变量(参见下面的示例).我不想要轴上的标签.如果没有as.factor公式中的调用,ann = F则会禁止打印标签,但as.factor在公式中不起作用.
为什么是这样?
谢谢.
# example for SO
# example data
x <- sample(1:100, 10)
y <- c(rep(1, 5), rep(2, 5))
# ann = F doesn't work here
plot(x ~ as.factor(y), ann = F)
# ann = F does work here
plot(x ~ y, ann = F)
Run Code Online (Sandbox Code Playgroud) 我有一个数据集,包含5个不同日期()的16个不同样本()a的波长范围内的光学吸收().样本()1 - 3 的输出如下.wlboddaydputbod
我需要每天每个样本的波长吸收自然对数的斜率.
我目前的方法是手动执行此操作:
# calculate and extract the slope for each sample and date
s275.1.0 <- lm(log(a) ~ wl, data = spec275, subset = bod == 1 & day == "2014-06-10")
s275.1.0.slope <- coef(s275.1.0)["wl"]
s275.2.0 <- lm(log(a) ~ wl, data = spec275, subset = bod == 2 & day == "2014-06-10")
s275.2.0.slope <- coef(s275.1.0)["wl"]
# etc...
# combine slopes into a vector
s275.slopes <- c(s275.1.0, s275.2.0) # etc...
Run Code Online (Sandbox Code Playgroud)
显然这是相当乏味的.是否有简单的方法来简化此代码以使R在所有样本和天数上迭代这些计算?
我试图通过使用R解决这个ProjectEuler问题来学习R.
如果我cat在我的函数中使用,我可以得到正确的值列表:
> n <- 1:9
> s <- 0
> ck <- function(n)
+ for(i in n)
+ if(i/3 == round(i/3) | i/5 == round(i/5)) cat(i)
> ck(n)
3569>
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试将这些分配给一个对象来对它们求和它就不起作用:
> n <- 1:9
> s <- 0
> ck <- function(n)
+ for(i in n)
+ if(i/3 == round(i/3) | i/5 == round(i/5)) s <- c(s, i)
> ck(n)
> s
[1] 0
>
Run Code Online (Sandbox Code Playgroud)
为什么第二个功能不起作用?
谢谢.
我试图存储一些文本,我可能会在</html>文档的标记之后使用(就像我\end{document}在LaTeX中经常使用的那样),但浏览器仍会显示文本.
这是我的理解是,页面是由什么是之间定义<html>和</html>,那么为什么事情超出</html>获得的信息?
我有一个如下所示的数据框:
index1 <- c(rep("A", 3), rep("B", 3), rep("C", 3))
index2 <- rep(c("X", "Y", "Z"), 3)
value <- sample(1:100, 9)
SEdata <- data.frame(index1, index2, value)
Run Code Online (Sandbox Code Playgroud)
我要的是最大value为每个组合的index1和index2(即最大所有AX,最大所有AY的,等...)
我试过这样使用tapply:
tapply(SEdata$value, SEdata$index1 & SEdata$index2, max)
Run Code Online (Sandbox Code Playgroud)
……但这显然行不通。
有没有办法tapply处理 2 个索引条件,或者有没有更好的方法来解决这个问题?