R 使用';变异';使用传入的参数名称创建新列
我想添加一个新的数据列,并使用传入的参数命名该列。我习惯于使用dplyr的逐行变异和其他直接硬编码名称的方法,但我不确定从哪里开始。我如何使用mutate或类似的简单/优雅的东西 可复制示例: 假设main是由定义的数据帧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
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]]