小编nof*_*lly的帖子

使用文本标记最小和最大刻度填充渐变图例:ggplot2

我在创建打印ggplot2使用scale_fill_gradientn.我想在缩放图例的最小值和最大值处添加文本.例如,在图例最小显示"最小"和图例最大显示"最大".有些帖子使用离散填充并添加带有数字而不是文本的标签(例如此处),但我不确定如何使用该labels功能scale_fill_gradientn仅在最小和最大时插入文本.目前我很容易出错:

Error in scale_labels.continuous(scale, breaks) : 
Breaks and labels are different lengths
Run Code Online (Sandbox Code Playgroud)

这种类型的缩放/填充是否可以在ggplot2中使用此文本标签?

# The example code here produces an plot for illustrative purposes only.
# create data frame, from ggplot2 documentation
df <- expand.grid(x = 0:5, y = 0:5) 
df$z <- runif(nrow(df))

#plot
ggplot(df, aes(x, y, fill = z)) + geom_raster() + 
scale_fill_gradientn(colours=topo.colors(7),na.value = "transparent")
Run Code Online (Sandbox Code Playgroud)

label r legend fill ggplot2

18
推荐指数
2
解决办法
3万
查看次数

如果至少有一个组成员满足条件,则从data.frame中删除组

data.frame如果他们的任何成员符合条件,我有一个我想删除整个团体的地方.

在第一个示例中,如果值是数字,则条件是NA下面的代码.

df <- structure(list(world = c(1, 2, 3, 3, 2, NA, 1, 2, 3, 2), place = c(1, 
1, 2, 2, 3, 3, 1, 2, 3, 1), group = c(1, 1, 1, 2, 2, 2, 3, 
3, 3, 3)), .Names = c("world", "place", "group"), row.names = c(NA, 
-10L), class = "data.frame")

ans <- ddply(df, . (group), summarize, code=mean(world))
ans$code[is.na(ans$code)] <- 0
ans2 <- merge(df,ans)
final.ans <- ans2[ans2$code !=0,]
Run Code Online (Sandbox Code Playgroud)

然而,这种ddply动作与NA如果条件是除"值将无法正常工作NA",或者如果值是非数字.

例如,如果我想删除任何具有 …

r subset plyr

11
推荐指数
3
解决办法
6411
查看次数

拆分列表每n个元素和cbind,然后是rbind切片

我想切片列表中的每个n元素,cbind切片,然后rbind切片.

我可以使用下面的代码执行此操作(n = 10个元素,列表长度为30个元素).我'手动'选择列表中的每10个元素,然后选择cbind这10个元素切片.然后我rbind那些cbinded切片.

但是,我认为可以通过l*plyin plyr或者dplyr至少其中一些来实现这一点.对于初学者,我现在不知道如何选择列表中的每个n元素,并且似乎不知道找到这个答案的适当搜索词.

dl <- list(c(2L, 1L, 3L, 2L, 1L, 1L, 3L), c(1L, 1L, 2L, 1L, 1L, 2L, 
1L), c(1L, 1L, 2L, 2L, 3L, 3L, 3L), c(1L, 1L, 2L, 2L, 3L, 3L, 
3L), c(1L, 1L, 2L, 2L, 3L, 3L, 3L), c(1L, 1L, 2L, 2L, 3L, 3L, 
1L), c(1L, 1L, 2L, 2L, 3L, 3L, 3L), c(1L, 3L, 2L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r list rbind cbind dplyr

7
推荐指数
1
解决办法
466
查看次数

从组创建索引以从原始data.frame中选择值以在结果中使用

我有一个data.frame df.我想使用输出from summarize作为索引来创建一个新变量,以从原始data.frame中的列中检索值.

df.l下面几列trial,location,posi,date,和value.

我想使用"的总和value== 1"为每个组(trial,location,date)作为指标,从中选择从值posi并将其存储为新的变量.

valuein df.l可以是1或0(一旦它变为零,它仍然如此,只要它正确排序,即posi0 - 1).此分组总和表示组中的值从1更改为0.

要确定索引位置,以下代码有效:

test <- df.l %>% 
  group_by(trial, location, date) %>%
  summarise(n= sum(value==1))
Run Code Online (Sandbox Code Playgroud)

但当然posi缺少了.

我希望下面的代码可以工作,但事实并非如此.它从正确的结果开始,但在某处索引出错了.我不知道像我一样调用列是否有意义.

test <- df.l %>% 
  group_by(trial, location, date) %>%
  summarise(n= sum(value==1)) %>%
  mutate(ANS = nth(df.l$posi,n))
Run Code Online (Sandbox Code Playgroud)

使用dplyr我可以从组创建"索引"以从原始data.frame中选择一个值,然后将此变量添加到新的data.frame中吗?或者,是否有另一种方法使用dplyr来实现相同的结果?

# truncated data.frame
df.l <- structure(list(trial = c(1L, 1L, 1L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r dplyr

6
推荐指数
1
解决办法
1517
查看次数

均匀分布矢量中指定值的范围

我有一个向量A,我希望尽可能均匀地填充值.例如,如果A是1x30并且我想使用三个值,我将使用如下代码:

% A = zeros(1,30);
A([1:10])=0;
A([11:20])=1;
A([21:30])=2;
Run Code Online (Sandbox Code Playgroud)

这有效,但对我来说似乎有点麻烦.有没有更优雅的方法来均匀(尽可能)在向量中分配指定范围的值?我打算将每个值保存在"丛"中.

提前谢谢你.

matlab vector range

5
推荐指数
1
解决办法
1604
查看次数

从glm的lapply列表中提取p值

我使用lapply一次通过一个自变量对一个因变量执行几个glm回归.现在我Pr(>|z|)对每个自变量特别感兴趣.但是,我不确定如何Pr(>|z|)使用来自lapply的列表进行报告.

如果我只是在一次运行一个模型: coef(summary(fit))[,"Pr(>|z|)"]summary(fit)$coefficients[,4] 将工作(如描述在这里),但试图用类似的东西lapply似乎不工作.我可以使用lapplyglm使用访问器方法或直接从模型调用来获取p值吗?

#mtcars dataset
vars <- names(mtcars)[2:8]
fits <- lapply(vars, function(x) {glm(substitute(mpg ~ i, list(i = as.name(x))), family=binomial, data = mtcars)})
lapply(fits,summary) # this works
lapply(fits, coefficients) # this works
#lapply(fits, summary(fits)$coefficients[,4])# this for example does not work
Run Code Online (Sandbox Code Playgroud)

r lapply glm

5
推荐指数
2
解决办法
5232
查看次数

使用gtable创建ggplot图(具有相同宽度的凹槽)以创建2x2布局

我试图使用grobs和gtable将4(ggplot2)图排列成2x2网格.我不知道如何设置宽度,也不知道非1xn或nx1排列.

使用此代码:

data(iris)
a <- ggplot(iris, aes(x=Species, y=Petal.Width)) + geom_boxplot(color="black") + ylab(expression(Foo~Bar~(g~cm^{-3})))
b <- ggplot(iris, aes(x=Species, y=Petal.Length*100)) + geom_boxplot(color="black") + ylab("foobar (mm)")
c <- ggplot(iris, aes(x=Species, y=Sepal.Width)) + geom_boxplot(color="black") + ylab("foobar (%)")
d <- ggplot(iris, aes(x=Species, y=log10(Sepal.Length))) + geom_boxplot(color="black") + ylab("foobar (cm)")

plots <- list(a,b,c,d)
grobs = lapply(plots, ggplotGrob)
g = do.call(rbind, c(grobs, size="first"))

g$widths = do.call(unit.pmax, lapply(grobs, "[[", "widths"))
grid.newpage()
grid.draw(g)
Run Code Online (Sandbox Code Playgroud)

我可以创建以下1x4安排. 1乘4的情节安排

如果我将grid.arrange用于两列,则在4个图上,这些图的宽度不同.

4乘4的绘图排列 - 不等宽度

如何将图表绑定到4 x 4排列的gtable中?

# I thought maybe I could cbind, then rbind, but this does not …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 grob gtable

4
推荐指数
1
解决办法
6527
查看次数

将dataframe变量中的NA值替换为其他数据帧中的值"ID"

我想知道是否有一种更简洁的方法来替换NA数据帧中变量的值,而不是我在下面所做的.下面的代码似乎比我认为在R中可能的更长.例如,我不知道某些软件包/工具可能更简洁地做到这一点.

有没有办法替换或合并值只有它们NA?在使用all.x = T我有一些NA值合并两个数据帧之后,我想使用公共变量替换来自另一个数据帧的信息来链接替换.

# get dataframes
breaks <- structure(list(Break = 1:11, Value = c(2L, 13L, 7L, 9L, 40L, 
21L, 10L, 37L, 7L, 26L, 42L)), .Names = c("Break", "Value"), class = "data.frame", row.names = c(NA, 
-11L))

fsites <- structure(list(Site = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L, 3L, 3L), Plot = c(0L, 1L, 2L, 3L, 4L, 0L, 1L, 2L, 0L, 
1L, 2L, 3L, 4L, 5L), Break = …
Run Code Online (Sandbox Code Playgroud)

merge r dataframe

3
推荐指数
1
解决办法
2940
查看次数

置换矩阵行内的元素

我有一个矩阵A.

A = [0 0 0 0 1; 0 0 0 0 2; 0 1 2 3 4];
Run Code Online (Sandbox Code Playgroud)

我想随机置换每一行中的元素.例如,矩阵A2

A2 = [1 0 0 0 0; 0 0 0 2 0; 4 1 3 2 0]; % example of desired output
Run Code Online (Sandbox Code Playgroud)

我可以用矢量做到这一点:

Av = [0 1 2 3 4];
Bv = Av(randperm(5));
Run Code Online (Sandbox Code Playgroud)

但我不确定如何在矩阵中连续执行此操作,并且仅对给定行中的元素进行置换.这可能吗?我可以从许多置换向量构造一个矩阵,但我宁愿不这样做.

谢谢.

matlab element permutation matrix

2
推荐指数
1
解决办法
4085
查看次数

R将数据帧中的变量解释为因子; 事实并非如此

我将一个csv导入R,它认为我的变量FERNH是一个因素; 事实并非如此.我无法弄清楚为什么或如何解决它.我已经检查了FERNH中的值,它们看起来是正确的并且与其他8个变量一致.请指教.

str(height)
'data.frame':   512 obs. of  9 variables:
 $ DSH   : int  50 4 35 10 12 0 0 30 0 0 ...
 $ ESH   : int  0 0 0 0 0 30 80 10 8 15 ...
 $ ETH   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ CANEH : int  0 0 40 15 0 0 0 0 0 0 ...
 $ HERBH : int  0 0 0 0 0 0 5 …
Run Code Online (Sandbox Code Playgroud)

r

2
推荐指数
1
解决办法
1346
查看次数

按行,获取x值之间的列数的平均计数

我有一个data.frame包含几个列(即V1... Vn+1),其值为1或0,每列是一个时间步长.

我想知道time值1之间的平均值(列数).序列的1 1 1 1 1 1值为1.

目前我可以想到计算这个的方法是计算1s之间0的平均计数(+1),但它是有缺陷的.

例如,具有这些值的1 0 0 1 0 1行将具有结果2.5(2 + 1= 3; 3/2= 1.5; 1.5+ 1= 2.5).

但是,如果序列以0开始或结束,则应在没有它们的情况下计算此结果的结果.例如,0 1 0 0 1 1将按照1 0 0 1 1结果计算3.

有缺陷的例如1 0 1 1 0 0将被计算为1 0 1 1结果2,但这不是期望的结果(1.5) …

r apply dplyr

2
推荐指数
1
解决办法
74
查看次数

for for循环脚本只在每第N次迭代时执行一些操作

在MATLAB(或更一般地说)中,如果我只想要发生某些事情,例如,每50次迭代for loop我怎么能比下面更好?那就是不写出每个可能的+50值.谢谢.

for i = 1:1060;
    if i = 50 || 100 || 150 || ... || 1050
        randi(i); % for example, just do something
    end;
end;
Run Code Online (Sandbox Code Playgroud)

iteration matlab for-loop

1
推荐指数
2
解决办法
5869
查看次数

拆分数据集,对每个组应用不同的操作,然后组合

我使用下面的代码将数据集拆分为两个,并在每一半上执行类似的操作.然后将这两个结果合并在一起.我知道我可能正在描述split-apply-combine框架,但我无法想到如何简化下面的代码.

数据集有4个要更新的变量.4个变量中的每一个都有一个公式来计算新值,每半个公式有不同的公式,共计8个公式.

下面的代码可能会通过某种程度的矢量化来改进吗?它似乎比必要的更冗长.我不确定如何为每个分割半部执行不同的操作(即使用不同的公式),除了下面的方法.

data <- structure(list(site = c(1L, 1L, 1L, 1L, 1L, 1L), plot = 1:6, 
    C = c(40L, 30L, 10L, 5L, 0L, 0L), E = c(0L, 0L, 0L, 10L, 
    20L, 45L), M = c(0L, 0L, 0L, 0L, 0L, 10L), P = c(1000L, 900L, 
    800L, 500L, 200L, 50L), FF = c(1L, 1L, 1L, 0L, 0L, 0L)), .Names = c("site", 
"plot", "C", "E", "M", "P", "FF"), class = "data.frame", row.names = c(NA, 
-6L)) 

df1 <- data[data$FF == 1,]
df0 <- data[data$FF …
Run Code Online (Sandbox Code Playgroud)

r plyr dplyr data.table

0
推荐指数
1
解决办法
141
查看次数

标签 统计

r ×10

dplyr ×4

matlab ×3

ggplot2 ×2

plyr ×2

apply ×1

cbind ×1

data.table ×1

dataframe ×1

element ×1

fill ×1

for-loop ×1

glm ×1

grob ×1

gtable ×1

iteration ×1

label ×1

lapply ×1

legend ×1

list ×1

matrix ×1

merge ×1

permutation ×1

range ×1

rbind ×1

subset ×1

vector ×1