使用相同的数字更改向量或列表中的每个元素

时间:2015-10-20 23:35:11

标签: r

我有一个列表(可以通过unlist()更改为向量)并且我希望将每个数字递增1。

例如,如果我有x <- list(1, 2, 3, 6, 4) 我希望最终得到一个列表或向量2 3 4 7 5

我正在考虑使用apply或者创建一个循环遍历每个元素的函数,但我觉得这样会很混乱,并且必须有一个更简单的方法来实现它

1 个答案:

答案 0 :(得分:4)

我真的不明白这会是多么混乱。您可以使用lapply()向列表的每个元素添加1。在R中,这是在列表上应用函数的标准方法。

x <- list(1, 2, 3, 6, 4)
lapply(x, "+", 1) ## for a list result; unlist(x) + 1 for atomic result

或者如果您要参加国际密码高尔夫锦标赛,您可以使用

Map("+", x, 1)

或者您可以使用for()循环

for(i in seq_along(x)) x[[i]] <- x[[i]] + 1

或者,如果您有一个不公开的列表,则可以将x作为其骨架重新列出。

relist(unlist(x) + 1, x)  ## same as as.list(unlist(x) + 1) here