R 使用函数创建一个列表,然后将其拆分为两个列表

R 使用函数创建一个列表,然后将其拆分为两个列表,r,R,很抱歉打扰你们。我是编程新手,R真的很难。我尝试在线阅读解决方案,95%的时候,答案太复杂了,我无法理解 我试图使用一个函数创建一个随机数列表,然后将它们分成两部分 用户输入aa(N,拆分)。N表示创建的列表中的随机元素数,称为bb。然后,拆分编号表示用户希望如何将此列表拆分为两个,第一个新列表包含第一个拆分元素,第二个列表包含其余元素。例如 aa(7, 3) bb = 1,5,7,3,6,4,2 cc1 = 1, 5, 7 cc2 = 3, 6, 4, 2 aa <- function

很抱歉打扰你们。我是编程新手,R真的很难。我尝试在线阅读解决方案,95%的时候,答案太复杂了,我无法理解

我试图使用一个函数创建一个随机数列表,然后将它们分成两部分

用户输入aa(N,拆分)。N表示创建的列表中的随机元素数,称为bb。然后,拆分编号表示用户希望如何将此列表拆分为两个,第一个新列表包含第一个拆分元素,第二个列表包含其余元素。例如

aa(7, 3)
bb = 1,5,7,3,6,4,2
cc1 = 1, 5, 7
cc2 = 3, 6, 4, 2

aa <- function (N, split) {
  bb <- list (sample (1:N))
  cc1 <- bb[[1]][1:split] 
  cc2 <- bb[[1]][split+1:N]
}
aa(7,3)
bb=1,5,7,3,6,4,2
cc1=1,5,7
cc2=3,6,4,2

aa如@thelatemail所述,您可以通过函数
返回
a
list

aa <- function (N, split) {
   bb <- sample(N)
   return(list(cc1 = bb[1:split], cc2 = bb[(split+1):N]))
}

正如@thelatemail所提到的,您可以通过函数
返回
列表

aa <- function (N, split) {
   bb <- sample(N)
   return(list(cc1 = bb[1:split], cc2 = bb[(split+1):N]))
}

下面是一种获取所需内容的方法,但这很危险,因为您可能会意外地覆盖环境中已经存在的变量:

aa <- function(N, split){
    bb <- sample(1:N)
    s <- c(rep(1, split), rep(2, N - split))        
    assign("bb", bb, envir=.GlobalEnv)
    assign("cc1", bb[1:split], envir=.GlobalEnv)    
    assign("cc2", bb[split+1:N], envir=.GlobalEnv)  
}

现在,您可以使用bb、cc1和cc2访问结果。

这里有一种方法可以获得您想要的结果,但这很危险,因为您可能会意外地覆盖环境中已经存在的变量:

aa <- function(N, split){
    bb <- sample(1:N)
    s <- c(rep(1, split), rep(2, N - split))        
    assign("bb", bb, envir=.GlobalEnv)
    assign("cc1", bb[1:split], envir=.GlobalEnv)    
    assign("cc2", bb[split+1:N], envir=.GlobalEnv)  
}

现在,您可以使用bb、cc1和cc2访问结果。

您需要从函数中返回一些内容
cc1
cc2
仅存在于您的功能范围内,不会在您的工作区中创建单独的对象。尝试添加
列表(cc1,cc2)
作为函数内的附加最后一行。直接从函数创建额外对象的意图不是R通常的工作方式。函数的结果需要显式保存到新对象<你提出的解决方案让我学到了很多东西,但它不能解决需要。也许R无法解决需求。我将等待其他答案。谢谢你抽出时间。我会仔细考虑我自己的问题,看看我是否也能理解自己。你需要从你的函数中返回一些东西
cc1
cc2
仅存在于您的功能范围内,不会在您的工作区中创建单独的对象。尝试添加
列表(cc1,cc2)
作为函数内的附加最后一行。直接从函数创建额外对象的意图不是R通常的工作方式。函数的结果需要显式保存到新对象<你提出的解决方案让我学到了很多东西,但它不能解决需要。也许R无法解决需求。我将等待其他答案。谢谢你抽出时间。我会仔细考虑我自己的问题,看看我是否也能明白自己的意思。只是意识到你不需要开头的那一行
aa <- function(N, split){
    bb <- sample(1:N)
    s <- c(rep(1, split), rep(2, N - split))        
    assign("bb", bb, envir=.GlobalEnv)
    assign("cc1", bb[1:split], envir=.GlobalEnv)    
    assign("cc2", bb[split+1:N], envir=.GlobalEnv)  
}
ls()
aa(7, 3)
ls()