Tag: r

Data.table元编程

我认为元编程在这里是合适的。 我希望能够使用data.table,就像在一个web应用程序中使用MySQL一样。 也就是说,Web用户使用一些Web前端(例如Shiny服务器)来select数据库,select要过滤的列,select要分组的列,select要聚合的列和聚合函数。 我想使用R和data.table作为查询,聚合等的后端。假设前端存在,并且R将这些variables作为string进行validation等。 我编写了以下函数来构builddata.tableexpression式,并使用R的parse / eval元编程function来运行它。 这是一个合理的方式来做到这一点? 我包括所有相关的代码来testing这个。 源代码(读取安全性后)并运行test_agg_meta()来testing它。 这只是一个开始。 我可以添加更多的function。 但是我的主要问题是我是否过分地考虑这个问题。 当所有的input都是未定的时候,是否有一个更直接的方式来使用data.table,而不使用parsing/评估元编程? 我也知道“有”的说法和其他无糖function的方法,但不知道是否可以照顾所有情况。 require(data.table) fake_data<-function(num=12){ #make some fake data x=1:num lets=letters[1:num] data=data.table( u=rep(c("A","B","C"),floor(num/3)), v=x %%2, w=lets, x=x, y=x^2, z=1-x) return(data) } data_table_meta<-function( #aggregate a data.table meta-programmatically data_in=fake_data(), filter_cols=NULL, filter_min=NULL, filter_max=NULL, groupby_cols=NULL, agg_cols=setdiff(names(data_in),groupby_cols), agg_funcs=NULL, verbose=F, validate=T, jsep="_" ){ all_cols=names(data_in) if (validate) { stopifnot(length(filter_cols) == […]

在ggplot2的各个方面注释文本

我想用以下代码在剧情的最后一个方面注释一些文字: library(ggplot2) p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() p <- p + facet_grid(. ~ cyl) p <- p + annotate("text", label = "Test", size = 4, x = 15, y = 5) print(p) 但是这个代码注释了每个方面的文本。 如果您指导我如何仅在一个方面获得注释文本,我将非常感激。 提前致谢。

.EACHI在data.table中

我似乎无法find任何有关.EACHI在data.table中data.table任何文档。 我在文档中看到了一个简短的提及: 对于已知组的一个子集的聚合在通过i中的这些组并by=.EACHI设置时是特别有效的。 当i是一个data.table时, DT[i,j,by=.EACHI]对j中的每一行join的DT组进行求值。 我们把这个分组称为每个我。 但是,在DT的背景下,“群体”是什么意思呢? 是由DT上设置的密钥确定的组? 组中的每一个不同的行使用所有的列作为关键? 我完全理解如何运行类似DT[i,j,by=my_grouping_variable]但对于.EACHI如何工作会感到困惑。 有人可以解释吗?

在一个图表中绘制多个boxplot

我将数据保存为12列的.csv文件。 列2到11(标记为F1, F2, …, F11 )是features 。 Column one包含这些function的bad label 。 我想绘制所有这11个特征与boxplot ,但分别是good还是bad 。 我的代码到目前为止是: qplot(Label, F1, data=testData, geom = "boxplot", fill=Label, binwidth=0.5, main="Test") + xlab("Label") + ylab("Features") 但是,这只能显示F1对label 。 我的问题是:如何显示F2, F3, …, F11对一个图中的label与一些dodge position ? 我已经对这些特征进行了归一化处理,因此它们在[0 1]范围内处于相同的范围内。 testing数据可以在这里find。 我画了一些东西来解释这个问题(见下文)。

在原始数据中添加一列组的手段

我想在R data.frame添加一列基于因子列的data.frame 。 喜欢这个: df1 <- data.frame(X = rep(x = LETTERS[1:2], each = 3), Y = 1:6) df2 <- aggregate(data = df1, Y ~ X, FUN = mean) df3 <- merge(x = df1, y = df2, by = "X", suffixes = c(".Old",".New")) df3 # X Y.Old Y.New # 1 A 1 2 # 2 A […]

我怎么能把一个转换的规模在ggplot2的右侧?

我正在创build一个图表,显示随着时间的推移湖面水平的变化。 我附上了一个简单的例子。 我想添加一个比例尺(刻度线和注释)在图表的右侧,显示以英尺为单位的高程。 我知道ggplot2不会允许两个不同的尺度(见2 y轴,一个y轴在左边,另一个y轴在右边 ),但是因为这是一个相同比例的变换,有没有办法做这个? 我宁愿继续使用ggplot2,而不必恢复到plot()函数。 library(ggplot2) LakeLevels<-data.frame(Day=c(1:365),Elevation=sin(seq(0,2*pi,2*pi/364))*10+100) p <- ggplot(data=LakeLevels) + geom_line(aes(x=Day,y=Elevation)) + scale_y_continuous(name="Elevation (m)",limits=c(75,125)) p

使用grep匹配不同可能性的string

我想看看,如果在0和1的4个字符的string中出现"001"或"100"或"000" 。 例如,一个4个字符的string可以像"1100"或"0010"或"1001"或"1111" 。 如何用单个命令匹配string中的许多string? 我知道grep可以用于模式匹配,但是使用grep,我一次只能检查一个string。 我想知道是否可以使用多个string与其他命令或使用grep本身。

具有dynamic数量variables的公式

假设存在一些data.frame foo_data_frame,并且想要通过其他列find目标列Y的回归。 为此通常使用一些公式和模型。 例如: linear_model <- lm(Y ~ FACTOR_NAME_1 + FACTOR_NAME_2, foo_data_frame) 如果公式是静态编码的,那么效果会很好。 如果需要根据具有固定数量的因variables(例如2)的几个模型,可以这样处理: for (i in seq_len(factor_number)) { for (j in seq(i + 1, factor_number)) { linear_model <- lm(Y ~ F1 + F2, list(Y=foo_data_frame$Y, F1=foo_data_frame[[i]], F2=foo_data_frame[[j]])) # linear_model further analyzing… } } 我的问题是,如何在程序运行期间dynamic地改变variables的数量时,也会产生相同的影响? for (number_of_factors in seq_len(5)) { # Then root over subsets with […]

添加一个共同的图例组合ggplots

我有两个ggplots,我水平alignmentgrid.arrange 。 我已经浏览了很多论坛post,但是我尝试的所有东西似乎都是现在已更新并命名为其他内容的命令。 我的数据看起来像这样; # Data plot 1 axis1 axis2 group1 -0.212201 0.358867 group2 -0.279756 -0.126194 group3 0.186860 -0.203273 group4 0.417117 -0.002592 group1 -0.212201 0.358867 group2 -0.279756 -0.126194 group3 0.186860 -0.203273 group4 0.186860 -0.203273 # Data plot 2 axis1 axis2 group1 0.211826 -0.306214 group2 -0.072626 0.104988 group3 -0.072626 0.104988 group4 -0.072626 0.104988 group1 0.211826 -0.306214 […]

从线性回归中提取p值和r平方

你如何从一个简单的线性回归模型中得出p值(单个解释variables系数的非显着性的意义)和R平方值? 例如… x = cumsum(c(0, runif(100, -1, +1))) y = cumsum(c(0, runif(100, -1, +1))) fit = lm(y ~ x) summary(fit) 我知道summary(fit) 显示 p值和R平方值,但是我想能够将这些值粘贴到其他variables中。