gpt4 book ai didi

r - 函数不能嵌入到另一个函数中

转载 作者:行者123 更新时间:2023-12-02 06:50:54 26 4
gpt4 key购买 nike

在我的数据集中,ID 具有不止一个不同的名称。为了检测它们,我构建了这个函数:

ddply(my_dataframe, ~ID_col, summarise, number_of_names = length(unique(names_col)))

这很好用,所以我得到了一个表格,其中第一列是 ID,第二列是不同名称的数量。

因为我需要对几个 ID/名称对执行此操作,所以我决定将 ddply 函数放在一个函数中。我是这样做的:

function_name = function (source, id, name) {
ddply(source, ~id, summarise, number_of_names = length(unique(name)))

不幸的是,当我使用它时会抛出一个错误:

function_name(my_dataframe, ID_col, names_col)
# Error in unique.default(x) : unique() applies only to vectors

如您所见,它与之前的代码完全相同,但嵌入到具有三个变量的函数中。我非常想修复它,并且真的很期待找到解决方案。

仅供引用:在我的原始代码中,我没有使用“source”或“name”而是德语单词,因此现有的其他功能应该没有问题。我也已经尝试将变量放在引号中。

感谢您的帮助!

这是 DF 的样子:

my_dataframe <- data.frame(
ID_col = c(letters[2:9], letters[3:4]),
names_col = paste0("name-", letters[1:10])
)

有 303 个 ID 但有 963 个名称。

最佳答案

R 始终具有通过使用双方括号按变量名称的值选择列的功能。使用 tapply 你可以这样做:

function_name = function (source, id, name) {
data.frame(
N=tapply(
source[[name]],
my_dataframe[[id]],
function(x){
length(unique(x))
}
)
)
}

然后:

> function_name(my_dataframe,"ID_col","names_col")
N
FU181 2
FU901 1
FU992 1

请注意名称在返回数据框的行名称中。

关于r - 函数不能嵌入到另一个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824133/

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