如何在 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"))
}
我想构建我的函数来更改列名。
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"))
}