gpt4 book ai didi

r - 如何在 R 中的函数内部使用 colnames() 而不将数字输出转换为字符?

转载 作者:行者123 更新时间:2023-12-02 09:03:02 25 4
gpt4 key购买 nike

我编写了一个 R 函数,它接受输入并输出数据帧。它按预期工作,但是,当我尝试添加另一行来命名输出数据帧的唯一列时,它失败了。

为此,我尝试使用colnames()

失败操作的结果是一个字符,而不是正确的数据帧。这是一个直接讨论问题的可重现的小例子。

# Fake Data

numbers = rnorm(5)

# Functions ---------------------------------------------------------------

# Dataframe is generated correctly.

print_df_right = function(my_input){
number_df = data.frame(my_input)
}

foo = print_df_right(numbers)
foo # A correct, column-nameless dataframe
#> my_input
#> 1 0.3379014
#> 2 0.5306519
#> 3 0.7689149
#> 4 -0.5548860
#> 5 -2.1199438


# Dataframe is ruined because colnames() turns it into a vector.
ruin_my_df = function(my_input){
number_df = data.frame(my_input)
colnames(number_df) = c("numbers")
}

foo = ruin_my_df(numbers)
foo # This was supposed to be a dataframe, but instead is a character.
#> [1] "numbers"

最佳答案

我们需要返回数据集。在OP的函数中,它返回最后一个表达式,即将列名称分配给“numbers”,并且由于只有一列,因此返回列名称“numbers”

ruin_my_df_corrected <- function(my_input){
number_df <- data.frame(my_input)
colnames(number_df) <- c("numbers")
number_df
}

或者不创建多个语句,而是单个语句

ruin_my_df_corrected <- function(my_input){
setNames(data.frame(my_input), "numbers")

}

关于r - 如何在 R 中的函数内部使用 colnames() 而不将数字输出转换为字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61645461/

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