这当然是一个基本的问题,但找不到解决的方法。
我需要为每个组(fs)创建一个从最小值(dds_min)到最大值(dds_max)的值序列。这是我的数据:
fs <- c("early", "late")
dds_min <-as.numeric(c("47.2", "40"))
dds_max <-as.numeric(c("122", "105"))
dds_min.max <-as.data.frame(cbind(fs,dds_min, dds_max))这就是我所做的……
dss_levels <-dds_min.max %>%
group_by(fs) %>%
mutate(dds=seq(dds_min,dds_max,length.out=100))我打算创建一个新的变量(dds),它的长度必须为100,并且根据"fs“在不同的值上开始和结束。我的期望是以另一个包含两列(fs和dds)、200个值的数据帧(dss_levels)结束。
但是我得到了这个错误。
Error: Column `dds` must be length 1 (the group size), not 100
In addition: Warning messages:
1: In Ops.factor(to, from) : ‘-’ not meaningful for factors
2: In Ops.factor(from, seq_len(length.out - 2L) * by) :
‘+’ not meaningful for factors任何帮助都将不胜感激。
谢谢!
发布于 2019-12-20 06:21:26
出于说明的目的,我将序列长度设为5,您可以将其更改为100。
library(purrr)
library(tidyr)
dds_min.max %>%
mutate(dds= map2(dds_min, dds_max, seq, length.out = 5)) %>%
unnest(cols = dds)
# # A tibble: 10 x 4
# fs dds_min dds_max dds
# <fct> <dbl> <dbl> <dbl>
# 1 early 47.2 122 47.2
# 2 early 47.2 122 65.9
# 3 early 47.2 122 84.6
# 4 early 47.2 122 103.
# 5 early 47.2 122 122
# 6 late 40 105 40
# 7 late 40 105 56.2
# 8 late 40 105 72.5
# 9 late 40 105 88.8
# 10 late 40 105 105 使用此数据(请确保您的数值列是数值列!不要使用cbind!)
fs <- c("early", "late")
dds_min <-c(47.2, 40)
dds_max <-c(122, 105)
dds_min.max <-data.frame(fs,dds_min, dds_max)https://stackoverflow.com/questions/59417536
复制相似问题