【发布时间】:2015-11-06 10:43:53
【问题描述】:
给定两个向量:
vec_nums <- 1:20
vec_ltrs <- letters[1:10]
我想编写一个函数,将它们合并,第二个向量中的每个元素出现在第一个向量中精确定义的位置。例如,运行:
vec_mrg <- funMergeVectsByPlace(x = vec_num, y = vec_ltrs, position = 3)
应该返回vec_mrg的以下内容:
[1] "a" "b" "1" "c" "d" "2" "f" "g" "3" "i" "j" "4" "l" "m" "5" ...
所需特性:
- 该函数将来自通过
y =传递的向量中的元素放置在position =给定的位置上,从左侧开始计数。所以position = 3应该理解为*每三分之一”占3、6、... - 该函数应适用于数字字符串和因子向量并返回有序因子。
- 该函数应适用于因子、字符串和数字向量
- 如果向量
y小于x中的插入数,该函数应返回x的剩余部分而不添加任何内容
建议的结构
我设想函数是这样的结构:
funMergeVectsByPlace <- function(x,y position = 3) {
# Convert
vec_a <- as.character(x)
vec_b <- as.character(y)
# Missing part
# Combine two vectors
# Create ordered factor
vec_fac <- factor(vec_mrg,
# levels =
# I want the levels to reflect the order of elements in the vec_merg
)
# Return
return(vec_fac)
}
样品
最简单
关于尝试,最简单的方法:
vec_mrg <- c(vec_nums, vec_ltrs)
vec_mrg <- order(vec_mrg)
但这不会创建订单
循环
for (i in 1:length(vec_nums)) {
pos <- position
vec_nums[pos] <- vec_ltrs[i]
pos <- pos + pos
# i will be out of bounds and the way to move the other vector is missing
}
【问题讨论】:
-
您已经尝试过什么了吗? messy_vec 和正则表达式部分来自哪里?
-
CodeGolf 分配?
-
@Pascal 可能是,但我只想在这个阶段开始工作。
-
@Heroka 来自另一个关于排序杂乱字符串的讨论。我实际上可以更改它,因为它与手头的任务无关。
-
@Konrad 你知道 SO 不是代码编写服务吗?我认为这里的许多人都喜欢一个谜题,但你自己的一些努力/想法如何解决它而不是“做这个”可能不会出错。
标签: r string function vector character