【问题标题】:R functions using data.frame$column not working使用 data.frame$column 的 R 函数不起作用
【发布时间】:2020-02-25 10:37:02
【问题描述】:

以下两个函数目前不起作用,但是当我将它们全部写出来时起作用 - 不知道为什么。任何修复建议都会很棒。

change_specific_column_name <- function(data.frame,old_column_name,new_column_name){
  names(data.frame)[names(data.frame) == old_column_name] <- new_column_name
}

change_specific_observations_name <- function(data.frame, column_name, old_obseration, new_observation){
   data.frame$column_name[which(data.frame$column_name == old_obseration)] <- new_observation
}

test_frame <- data.frame(Does=1,This=2,Work=3)

change_specific_column_name(test_frame,"Work","Happen") # this doesn't change the name of the column

names(test_frame)[names(test_frame) == "Work"] <- "Happen" # writing out the function does change the name

【问题讨论】:

  • 在函数调用的末尾添加return(data.frame)。也不要调用base r函数/类之类的变量,例如data.frame

标签: r function names


【解决方案1】:

虽然不准确,但您可以将函数的参数视为按值传递,因此很明显对函数的形参所做的更改不会影响实际参数。

任何修复建议都会很棒。

如果你真的想要一个函数来修改它的参数,你可以使用 e 描述的技术。 G。在Call by reference in R下;基本上只是将您的作业包装在 eval.parent(substitute(…)) 中。

change_specific_column_name <- function(data.frame, old_column_name, new_column_name)
 eval.parent(substitute(names(data.frame)[names(data.frame) == old_column_name] <- new_column_name))

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 2021-03-08
    • 1970-01-01
    • 2016-08-06
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多