使用 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 中使用。我如何找到执行完成的索引,或者还有其他东西。
谨致问候克里斯蒂安
这是使用库 dplyr
和 tidyr
的一种方法:
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))
我对编程游戏有点陌生。 我以前经常使用 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 中使用。我如何找到执行完成的索引,或者还有其他东西。
谨致问候克里斯蒂安
这是使用库 dplyr
和 tidyr
的一种方法:
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))