如何从同一行的 2 列创建一个序列
How to create a sequence from 2 columns of the same row
我有一个 2 列和可变行数的数据框
示例:
E P
1 0.5 1
2 2 2.5
3 3.5 4
. . .
. . .
n En Pn
我想从 "E" 列的第一个值到 "P" 列的第一个值 0.1 的序列创建一个 data.frame,这是代码我做了:
rows_covering <<- data.frame(c(c1 = list (seq (E[1],P[1], 0.1)),
c2 = list (seq (E[2],P[2], 0.1)),
c3 = list (seq (E[3],P[3], 0.1))
))
但是,由于我的行数在变化,每次都手动更改它并不好,尤其是对于大量行。
是否可以自动完成?
你可以试试
lapply(seq_along(E), function(x) list(seq(E[x], P[x], 0.1)))
整洁的方式...
df <- tibble(start = c(0.5, 0.2),
end = c(1, 0.8))
df %>% mutate(seq = map2(start, end, ~seq(.x, .y, by = 0.1)))
我认为你必须使用 seq(E[x], P[x],0.1)
E <- c(0.5, 2, 3.5)
P <- c(1, 2.5, 4)
my_seq <- lapply(seq_along(E), function (x) (seq(E[x], P[x], 0.1)))
my_seq
基础 R 选项是使用 Map
+ seq
df <- within(df,rows_covering <- Map(seq,E,P,by = 0.1))
这样
> df
E P rows_covering
1 0.5 1.0 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
2 2.0 2.5 2.0, 2.1, 2.2, 2.3, 2.4, 2.5
3 3.5 4.0 3.5, 3.6, 3.7, 3.8, 3.9, 4.0
数据
df <- structure(list(E = c(0.5, 2, 3.5), P = c(1, 2.5, 4)), class = "data.frame", row.names = c(NA,
-3L))
> df
E P
1 0.5 1.0
2 2.0 2.5
3 3.5 4.0
我有一个 2 列和可变行数的数据框 示例:
E P
1 0.5 1
2 2 2.5
3 3.5 4
. . .
. . .
n En Pn
我想从 "E" 列的第一个值到 "P" 列的第一个值 0.1 的序列创建一个 data.frame,这是代码我做了:
rows_covering <<- data.frame(c(c1 = list (seq (E[1],P[1], 0.1)),
c2 = list (seq (E[2],P[2], 0.1)),
c3 = list (seq (E[3],P[3], 0.1))
))
但是,由于我的行数在变化,每次都手动更改它并不好,尤其是对于大量行。 是否可以自动完成?
你可以试试
lapply(seq_along(E), function(x) list(seq(E[x], P[x], 0.1)))
整洁的方式...
df <- tibble(start = c(0.5, 0.2),
end = c(1, 0.8))
df %>% mutate(seq = map2(start, end, ~seq(.x, .y, by = 0.1)))
我认为你必须使用 seq(E[x], P[x],0.1)
E <- c(0.5, 2, 3.5)
P <- c(1, 2.5, 4)
my_seq <- lapply(seq_along(E), function (x) (seq(E[x], P[x], 0.1)))
my_seq
基础 R 选项是使用 Map
+ seq
df <- within(df,rows_covering <- Map(seq,E,P,by = 0.1))
这样
> df
E P rows_covering
1 0.5 1.0 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
2 2.0 2.5 2.0, 2.1, 2.2, 2.3, 2.4, 2.5
3 3.5 4.0 3.5, 3.6, 3.7, 3.8, 3.9, 4.0
数据
df <- structure(list(E = c(0.5, 2, 3.5), P = c(1, 2.5, 4)), class = "data.frame", row.names = c(NA,
-3L))
> df
E P
1 0.5 1.0
2 2.0 2.5
3 3.5 4.0