如何在 R 中存储自定义函数的输出?

How to store the output of my customized function in R?

我想构建我的函数来更改列名。

x1 = c(1:5)
x2 = c(6:10)
x = data.frame(
  X1 = x1,
  X2 = x2
)

myFunction = function(x) {
  x <- rename(x, "newX1" = "X1")
  x <- rename(x, "newX2" = "X2")
  newX <- x
  return(newX)
}

print(myFunction(x))

输出如下:

  newX1 newX2
1     1     6
2     2     7
3     3     8
4     4     9
5     5    10

我可以看到我想要的结果,但输出没有作为数据存储在我的内存中。 我想使用函数的输出(数据)进行下一个过程。

谢谢。

有很多代码在您的尝试中不需要 - 本质上您只是为 rename() 函数创建了一个包装器,而没有添加太多内容。你可以这样做

rename(x, "newX1" = "x1", "newX2" = "x2"))

要让它分配对象,你可以这样做

x <- rename(x, "newX1" = "x1", "newX2" = "x2"))

assign("x", rename(x, "newX1" = "x1", "newX2" = "x2"))

根据您的评论,您似乎有很多 data.frames 需要进行相同的重命名,您可以使用 for 循环

自动执行此操作
# Exmaple datasets
df1 <- df2 <- df3 <- df4 <- df5 <- data.frame(x1 = 1:5, x2 = 6:10)
# Define datasets to rename
datasets_to_rename <- c("df1", "df2", "df3")
# Rename the selected datasets
for(i in datasets_to_rename){
  assign(i, rename(get(i), "newX1" = "x1", "newX2" = "x2"))
}

如果你想对全球环境中的所有 data.frames 使用

执行此操作,你可以使其更加自动化
for(i in names(Filter(is.data.frame, as.list(.GlobalEnv)))){
  assign(i, rename(get(i), "newX1" = "x1", "newX2" = "x2"))
}