我试图将具有列名称的对象传递给spread函数,但是它不是读取对象内部的值而只是尝试使用对象名称本身
这里只是一个玩具示例
library(tidyr)
d = (1:4)
n = c("a"," a", "b","b")
s = c(1, 2,5,7)
df = data.frame(d,n, s)
Value <- n
data_wide <- spread(df, Value , s)
Run Code Online (Sandbox Code Playgroud)
错误:输入中不存在键列"值".
虽然下面工作正常:
data_wide <- spread(df, n, s)
d a a b
1 1 NA 1 NA
2 2 2 NA NA
3 3 NA NA 5
4 4 NA NA 7
Run Code Online (Sandbox Code Playgroud) 我有一个 df 像:
ID value1 start end
1 100 1 2
1 200 2 4
2 50 1 1
2 30 3 5
Run Code Online (Sandbox Code Playgroud)
我想为开始和结束之间的每个值填充新行
最终的 df 应如下所示,其中 period 是开始和结束之间的每个唯一值
ID value1 period
1 100 1
1 100 2
1 200 2
1 200 3
1 200 4
2 50 1
2 30 3
2 30 4
2 30 5
Run Code Online (Sandbox Code Playgroud) 尝试仅使用一个播放按钮在 R 中使用 Plotly 为多个绘图设置动画
为了获得我使用的每个数据条目的帧值:
accumulate_by <- function(dat, var) {
var <- lazyeval::f_eval(var, dat)
lvls <- plotly:::getLevels(var)
dats <- lapply(seq_along(lvls), function(x) {
cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
})
dplyr::bind_rows(dats)
}
d <- df3 %>% select(gen,score) %>%
accumulate_by(~gen)
d2 <- df3 %>% select(gen,cpg_margin) %>%
accumulate_by(~gen)
Run Code Online (Sandbox Code Playgroud)
接下来我创建情节
p1 <- d %>%
plot_ly(
x = ~gen,
y = ~score,
frame = ~frame,
type = 'scatter',
mode = 'lines',
line = list(simplyfy = F)
) %>%
layout(
xaxis = list( …Run Code Online (Sandbox Code Playgroud) 以下数据集
a b c d e
X 1 1 1 1 0
Z 1 0 0 1 0
Y 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想创建列表.当列中至少有一个值等于1时,一个具有所有列名称.一个列表包含所有行名称(X,Z,Y),每当至少一个行元素的值为1时.
我试过了:
df[Reduce(`|`, as.data.frame(lapply(df)), function(x) x %in% 1),]
Run Code Online (Sandbox Code Playgroud)
没有结果.
最后我想要
x=(a,b,c,d) and z=(X,Z)
Run Code Online (Sandbox Code Playgroud)