如何用R语言基础函数替代循环将向量拆分为连续段数据框?
R基础包中是否有现成函数实现向量转连续段数据框?
现有向量:
vec <- c(1,2,3,4,5)
需要将其转换为如下格式的连续段数据框:
x xend 1 2 2 3 3 4 4 5
目前已通过循环实现该功能:
df <- NULL for (i in 1:(length(vec) - 1)) { df <- rbind(df, data.frame(x = vec[i], xend = vec[i + 1])) }
解答
R基础包里有更简洁高效的方法,无需编写循环:
df <- data.frame( x = head(vec, -1), xend = tail(vec, -1) )
head(vec, -1)提取向量中除最后一个元素外的所有值,对应数据框的x列;tail(vec, -1)提取向量中除第一个元素外的所有值,对应数据框的xend列;
两者组合刚好生成所需的连续配对数据框,相比循环反复rbind的方式,性能更优,代码也更简洁。
内容的提问来源于stack exchange,提问作者Tianjian Qin
相关产品推荐
相关产品推荐

