gpt4 book ai didi

r - 如何在 data.frame 中动态创建新列?

转载 作者:行者123 更新时间:2023-12-05 00:59:27 26 4
gpt4 key购买 nike

类似于问题

How to name variables on the fly?

基本上我想随时随地在 data.frame 中创建一个新列。可能是不好的做法,但对于我正在做的事情,这是一个很好的解决方案。

现在我已经尝试过:

test <- iris
create.new_var <- function(x) {
assign(paste("test$", x, sep=""), test$Petal.Width)
return(test)
}

test <- create.new.var('cheese')

该功能运行而不会中断。但是 data.frame 测试不包含标题为“cheese”的新列和 iris$Petal.Width 的值,正如人们想象的那样。

最佳答案

使用 assign不建议进行此类操作。但是,如果您需要尝试使用 assign ,一个可能的选择是

 create.new_var <- function(x){
assign('test', `[[<-`(test, x, value=test$Petal.Width), envir=.GlobalEnv)
}
test <- create.new_var('cheese')
head(test,3)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species cheese
#1 5.1 3.5 1.4 0.2 setosa 0.2
#2 4.9 3.0 1.4 0.2 setosa 0.2
#3 4.7 3.2 1.3 0.2 setosa 0.2

您还可以在函数中添加数据和替换列参数
create.new_var <- function(dat, x, x1){
str1 <- deparse(substitute(dat))
assign(str1, `[[<-`(dat, x, value=dat[,x1]), envir=.GlobalEnv)
}

test <- create.new_var(test, 'cheese', 'Petal.Width')

这是一个不使用 assign 的选项, 或 paste (一些被删帖也用了类似的方法)。
 create.new_var2 <- function(dat, x, x1){ 
dat[,x] <- dat[,x1]
dat}

create.new_var2(test, 'cheese', 'Petal.Width')

关于r - 如何在 data.frame 中动态创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30829968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com