我有36个不同的数据框,包含dX和dY变量.我已将它们存储在列表中,并希望将它们全部显示在x = dX和y = dY的同一图表上.
36个数据帧不共享相同的dX值.它们大致覆盖相同的范围,但没有完全相同的值,因此使用合并会产生大量的NA值.但行数相同.
我尝试了一些丑陋的东西,几乎可以起
g <- ggplot()
for (i in 1:36) {
g <- g + geom_line(data = df.list[[i]], aes(dX, dY, colour = i))
}
print(g)
Run Code Online (Sandbox Code Playgroud)
这会正确显示曲线,但不会应用颜色(我没有合适的图例).好的,图例中有36行可能不实用.在这种情况下,我会减少绘制的行数.
第二种方法:我尝试按如下方式熔化数据帧.
df <- melt(df.list, id.vars = "dX")
ggplot(df, aes(x = dX, y = value, colour = L1)) + geom_line()
Run Code Online (Sandbox Code Playgroud)
但是这会创建一个带有列的4变量数据框:dX,变量(总是等于dY),值(这里是dY值)和L1,它包含列表中数据框的索引.
以下是融化数据框的第一行:
dX variable value L1
1 4.952296 dY 6.211485e-05 1
2 6.766889 dY 7.661041e-05 1
3 8.581481 dY 9.550221e-05 1
4 10.396074 dY 1.192053e-04 1
5 12.210666 dY 1.498834e-04 1 …Run Code Online (Sandbox Code Playgroud) 我在4个温度 s下沿轴x对变量y进行了四次测量:
require(ggplot2)
x <- seq(0, 10, by = 0.1)
y1 <- cos(x)
y2 <- cos(x) + 0.2
y3 <- cos(x) + 0.4
y4 <- cos(x) + 0.8
df.1 <- data.frame(x, y = y1, Name = "df.1", Temperature = 4)
df.2 <- data.frame(x, y = y2, Name = "df.2", Temperature = 3)
df.3 <- data.frame(x, y = y3, Name = "df.3", Temperature = 2)
df.4 <- data.frame(x, y = y4, Name = "df.4", Temperature = …Run Code Online (Sandbox Code Playgroud) 我想将差异应用于数据框列,通过其名称访问它。我所做的如下:
\n\nabscissa <- "distance"\ndata.op[, abscissa]\nRun Code Online (Sandbox Code Playgroud)\n\n我得到这个输出
\n\n# A tibble: 15 x 1\n distance\n <dbl>\n 1 0.0426\n 2 0.0409\n 3 0.0412\n 4 0.0406\n 5 0.0406\n 6 0.0407\n 7 0.0402\n 8 0.0403\n 9 0.103 \n10 0.0402\n11 0.0395\n12 0.0407\n13 0.0406\n14 0.0405\n15 0.0404\nRun Code Online (Sandbox Code Playgroud)\n\n然后我简单地尝试:
\n\n diff(data.op[, abscissa])\nRun Code Online (Sandbox Code Playgroud)\n\n但输出是:
\n\n # A tibble: 15 x 0\nRun Code Online (Sandbox Code Playgroud)\n\n我也尝试data.op[, abscissa] %>% diff过并且data.op %>% select(abscissa) %>% diff获得相同的零列结果。
但是,如果我这样做
\n\ndiff(as.data.frame(data.op)[, abscissa])\nRun Code Online (Sandbox Code Playgroud)\n\n有用:
\n\n[1] -0.00169560 0.00024120 …Run Code Online (Sandbox Code Playgroud) 假设我有一个字符向量:
test <- c("a##", "b", "c##", "d", "e")
Run Code Online (Sandbox Code Playgroud)
我想检索以"##"结尾的元素的索引.
我怎样才能做到这一点?