R 函数中的列表应返回多个结果,并将它们作为一个数据帧

R 函数中的列表应返回多个结果,并将它们作为一个数据帧,r,R,我希望这个函数返回一个列表,首先是列的名称,然后是数据帧。但是返回数据帧不起作用。它似乎与数据框的大小相适应。但我不知道如何解决这个问题 set.seed(1) a <- rnorm(1:5,0,1) b <- rnorm(1:5,0,1) c <- rnorm(1:5,0,1) df <- data.frame(a,b,c) test <- function(i){ num <- list() num[1] <- colnames(df)[i] n

我希望这个函数返回一个列表,首先是列的名称,然后是数据帧。但是返回数据帧不起作用。它似乎与数据框的大小相适应。但我不知道如何解决这个问题

set.seed(1)
a <- rnorm(1:5,0,1)
b <- rnorm(1:5,0,1)
c <- rnorm(1:5,0,1)
df <- data.frame(a,b,c)


test <- function(i){
num <- list()
num[1] <- colnames(df)[i]
num[2] <- df
return(num)
}
test(1)
[[1]]
[1] "a"

[[2]]
[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078
Warning message:
In num[2] <- df :
  number of items to replace is not a multiple of replacement length
set.seed(1)

a是否只返回相应列的值

尝试:

test <- function(df, i){
  list(name = colnames(df)[i], value = df[[i]])
}

test(df, 1)
#$name
#[1] "a"

#$value
#[1] -0.63  0.18 -0.84  1.60  0.33

测试您还需要索引
num[2]确定!但是如果我想返回整个数据帧,你想返回整个数据帧作为向量还是数据帧?如果作为向量使用
list(name=colnames(df)[i],value=unlist(df,use.names=FALSE))
或作为数据帧使用
list(name=colnames(df)[i],value=df)
结果可能看起来很奇怪,但这只是我正在处理的另一个数据集的示例