R 使用';变异';使用传入的参数名称创建新列

R 使用';变异';使用传入的参数名称创建新列,r,dplyr,geospatial,mutate,nse,R,Dplyr,Geospatial,Mutate,Nse,我想添加一个新的数据列,并使用传入的参数命名该列。我习惯于使用dplyr的逐行变异和其他直接硬编码名称的方法,但我不确定从哪里开始。我如何使用mutate或类似的简单/优雅的东西 可复制示例: 假设main是由定义的数据帧 main <- data.frame(name1 = c(2,3,4), name2 = c(4,5,6), name3 = c(4,5,3)) 但是下面的函数还不能像那样工作 joinData <- function(main, new, fieldnam

我想添加一个新的数据列,并使用传入的参数命名该列。我习惯于使用dplyr的逐行变异和其他直接硬编码名称的方法,但我不确定从哪里开始。我如何使用mutate或类似的简单/优雅的东西

可复制示例: 假设main是由定义的数据帧

main <- data.frame(name1 = c(2,3,4), name2 = c(4,5,6), name3 = c(4,5,3))  
但是下面的函数还不能像那样工作

joinData <- function(main, new, fieldname) {
    main$fieldname <- new  # This does not work; Want my string variable's 
                           # contents to become my new column name, 
                           # not my variable's name "fieldname"
    return(main)
}

joinData有时普通R更简单

data %>% … %>% { .[[fieldname]] <- ac_vec; . } %>% …

关于这个问题及其解决方案的一些很好的读物就在上面。

有时候普通的R更简单

data %>% … %>% { .[[fieldname]] <- ac_vec; . } %>% …
有关此问题及其解决方案的一些不错的阅读资料在上。

对于您的示例,请使用

dd <- data.frame(name1 = c(2,3,4), name2 = c(4,5,6), name3 = c(4,5,3))  
joinData <- function(main, new, fieldname) {
    main[[fieldname]] <- new 
    return(main)
}
# joinData(dd, letters[1:3], "letters")
#   name1 name2 name3 letters
# 1     2     4     4       a
# 2     3     5     5       b
# 3     4     6     3       c
dd与您的样本一起使用

dd <- data.frame(name1 = c(2,3,4), name2 = c(4,5,6), name3 = c(4,5,3))  
joinData <- function(main, new, fieldname) {
    main[[fieldname]] <- new 
    return(main)
}
# joinData(dd, letters[1:3], "letters")
#   name1 name2 name3 letters
# 1     2     4     4       a
# 2     3     5     5       b
# 3     4     6     3       c

dd您究竟如何调用此函数?如果您提供一个输入数据示例,那么我们就可以实际运行和测试代码,这会更容易为您提供帮助。(即data.frame(name1=c(2,3,4),name2=c(4,5,6),name3=c(4,5,3);其中say fieldname=“name4”和ac_vec=c(6,5,4))是一个很好的最小示例),但您是否尝试将fieldname作为符号传递?一串问?你到底在传递什么?试图以字符串形式传递fieldname。理想情况下,我想直截了当地说明data$mynewname您是否尝试过
data[[fieldname]]您到底是如何调用此函数的?如果您提供一个输入数据示例,那么我们就可以实际运行和测试代码,这会更容易为您提供帮助。(即data.frame(name1=c(2,3,4),name2=c(4,5,6),name3=c(4,5,3);其中say fieldname=“name4”和ac_vec=c(6,5,4))是一个很好的最小示例),但您是否尝试将fieldname作为符号传递?一串问?你到底在传递什么?试图以字符串形式传递fieldname。理想情况下,我只想直接说明data$mynewname您是否尝试过
data[[fieldname]]