使用 mapply 时在函数中进行 R 索引

R indexing in a function when using mapply

我对编程游戏有点陌生。 我以前经常使用 foor 循环,但我正在使用的数据集的大小不断增加。

因此我正在迁移以申请,但这是我缺乏理解的基础知识。 尝试了不同的方法,但无法正常工作。

之前我总是有一个变量来索引行索引。

z = 1 
for (i in x) {
execution[z, 3]
z = z + 1
}

以一种或另一种形式

现在我正在转换为 mapply,我对如何索引执行所用的行感到困惑。

目前我正在尝试整理信息。 它以

的形式出现

邮政编码、街道、起点门牌号、终点门牌号

作为

123, 主要街道, 1, 5

所以我要变身了。

123,主要街道,1

123, 大街, 3

123,主要街道,5

我已经编写了适用于索引的代码

i = 5
prov <- function(x = a) {

  len = seq(a[i,3], a[i,5], 2)
  a1 = rep(x = a[i, 1], times = length(len))
  a2 = rep(x = a[i, 2], times = length(len))
  a4 = rep(x = a[i, 4], times = length(len))
  a6 = rep(x = a[i, 6], times = length(len))
  a7 = rep(x = a[i, 7], times = length(len))
  a8 = rep(x = a[i, 8], times = length(len))
  a9 = rep(x = a[i, 9], times = length(len))
  a10 = rep(x = a[i, 10], times = length(len))
  a11= rep(x = a[i, 11], times = length(len))
  a12 = rep(x = a[i, 12], times = length(len))
  a13= rep(x = a[i, 13], times = length(len))
  a14 = rep(x = a[i, 14], times = length(len))
  a15 = rep(x = a[i, 15], times = length(len))
  a16 = rep(x = a[i, 16], times = length(len))
  a17 = rep(x = a[i, 17], times = length(len))
  a18 = rep(x = a[i, 18], times = length(len))
  
  tmatrix = cbind(a1, a2, len, a4, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18)
  return(tmatrix)
  
}

该函数适用于索引 i。 但是我不能在 mapply 中使用。我如何找到执行完成的索引,或者还有其他东西。

谨致问候克里斯蒂安

这是使用库 dplyrtidyr 的一种方法:

library(dplyr)
library(tidyr)

df %>%
  mutate(row = row_number(), 
         housenumber = startpoint.housenumber) %>%
  group_by(row ) %>%
  complete(housenumber = seq(startpoint.housenumber, endpoint.housenumber, 2)) %>%
  fill(postcode, street) %>%
  ungroup %>%
  select(postcode, street, housenumber)

#   postcode street      housenumber
#     <int> <chr>             <dbl>
#1      123 main street           1
#2      123 main street           3
#3      123 main street           5

数据

df <-structure(list(postcode = 123L, street = "main street", startpoint.housenumber = 1L, 
    endpoint.housenumber = 5L), class = "data.frame", row.names = c(NA, -1L))