我是 R 新手,正在尝试编写一个函数来将元素添加到列表中。
下面是函数 varNames 的代码。我可以使用 varNames("name1")
调用它,但 "name1"
不会添加到 "listNames"
(这仍然是一个空的列表)。
我一直在尝试一些事情,并寻找答案很长时间,但没有成功。
还尝试了lappend
,但没有成功。
listNames<-list()
varNames<- function(name){
listNames <- c(listNames, name)
}
最佳答案
R 是一种函数式语言,这通常意味着您将对象传递给函数,然后这些函数返回一些对象,您可以按照自己的意愿进行操作。因此,您的预期结果是这样的函数:
varNames <- function(existinglist, itemtoadd){
returnvalue <- c(existinglist, itemtoadd)
return(returnvalue)
}
listNames <- list()
a <- 'a'
varNames(existinglist = listNames, itemtoadd = a)
如果您想更换原来的listNames
带有函数返回值的对象,然后您需要将其分配给原始对象的名称:
listNames
listNames <- varNames(existinglist = listNames, itemtoadd = a)
listNames
您最初编写代码的方式是 R 新手中的常见错误。您试图创建所谓的“副作用”。也就是你要修改你原来的listNames
不使用 <-
就位的对象任务。这通常被认为是不好的做法,并且 R 中产生此类副作用的函数相对较少。
为了更好地理解这一点,您可能会发现 the R Introduction on scope和 on assignment within functions有帮助,以及Circle 6 of R Inferno .
关于r - 将元素追加到 R 函数中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23278303/