无法在R中的嵌套函数内使用变量
Not able to use a Variable inside a nested function in R
我一直在写一个必须找到唯一值的函数
基于几列分组后的特定列。
假设我有以下样本数据
head(Adult_data[,c(2,10,1)],20)
workclass sex age
1 State-gov Male 39
2 Self-emp-not-inc Male 50
3 Private Male 38
4 Private Male 53
5 Private Female 28
6 Private Female 37
7 Private Female 49
8 Self-emp-not-inc Male 52
9 Private Female 31
10 Private Male 42
11 Private Male 37
12 State-gov Male 30
13 Private Female 23
14 Private Male 32
15 Private Male 40
16 Private Male 34
17 Self-emp-not-inc Male 25
18 Private Male 32
19 Private Male 38
20 Self-emp-not-inc Female 43
>
我想计算 UNIQUE "Age" 值的数量,所以我写了一个
函数分组并使用 ddply 在我的内部查找唯一值
功能..
像这样,
U=function(File_name,W,S,A) {
File_name=read.csv("Adult_data_Set.csv")
Out1=File_name[[W]]
Out2=File_name[[S]]
Out3=File_name[[A]]
library(plyr); library(dplyr)
A=ddply(File_name,~File_name[[W]]+File_name[[S]],summarize,new=length(unique(File_name[[A]])))
print(A)
}
U(Adult_data_Set.csv,"workclass","sex","age")
报错如下
U(Adult_data_Set.csv,"workclass","sex","age")
Error in eval(expr, envir, enclos) : object 'File_name' not found
我什至在函数内部尝试过这样而不是 ddply 但是
没有给出预期的结果
library(dplyr)
UNQ=as.data.frame(File_name %>%
group_by(File_name[[W]],File_name[[S]]) %>%
summarise(n_distinct(File_name[[A]])))
print(UNQ)
但是当我们对函数中的值进行硬编码时,它可以正常工作
完美..
你能帮我看看如何在a中传递变量吗
用作参数。谢谢你的时间。
列宁,
以下代码对我有用:
U <- function(File_name, W, S, A){
File <- read.csv(File_name, header = TRUE)
Out1 <- File[[W]]
Out2 <- File[[S]]
Out3 <- File[[A]]
sapply(split(File, list(Out1, Out2)), function(x) length(unique(x[[A]])))
}
U("testing.csv", "workclass", "sex", "age")
有几点需要注意。我不调用具有与字符串 File_name
相同的文件数据的对象。我也不使用包含 sapply
函数中原始对象的 age
数据列的 Out3
。我们只想使用字符串 A
对我们的拆分列表进行子集化,即 "age"。这对你有帮助吗?
我一直在写一个必须找到唯一值的函数 基于几列分组后的特定列。
假设我有以下样本数据
head(Adult_data[,c(2,10,1)],20)
workclass sex age
1 State-gov Male 39
2 Self-emp-not-inc Male 50
3 Private Male 38
4 Private Male 53
5 Private Female 28
6 Private Female 37
7 Private Female 49
8 Self-emp-not-inc Male 52
9 Private Female 31
10 Private Male 42
11 Private Male 37
12 State-gov Male 30
13 Private Female 23
14 Private Male 32
15 Private Male 40
16 Private Male 34
17 Self-emp-not-inc Male 25
18 Private Male 32
19 Private Male 38
20 Self-emp-not-inc Female 43
>
我想计算 UNIQUE "Age" 值的数量,所以我写了一个 函数分组并使用 ddply 在我的内部查找唯一值 功能.. 像这样,
U=function(File_name,W,S,A) {
File_name=read.csv("Adult_data_Set.csv")
Out1=File_name[[W]]
Out2=File_name[[S]]
Out3=File_name[[A]]
library(plyr); library(dplyr)
A=ddply(File_name,~File_name[[W]]+File_name[[S]],summarize,new=length(unique(File_name[[A]])))
print(A)
}
U(Adult_data_Set.csv,"workclass","sex","age")
报错如下
U(Adult_data_Set.csv,"workclass","sex","age")
Error in eval(expr, envir, enclos) : object 'File_name' not found
我什至在函数内部尝试过这样而不是 ddply 但是 没有给出预期的结果
library(dplyr)
UNQ=as.data.frame(File_name %>%
group_by(File_name[[W]],File_name[[S]]) %>%
summarise(n_distinct(File_name[[A]])))
print(UNQ)
但是当我们对函数中的值进行硬编码时,它可以正常工作 完美..
你能帮我看看如何在a中传递变量吗 用作参数。谢谢你的时间。
列宁,
以下代码对我有用:
U <- function(File_name, W, S, A){
File <- read.csv(File_name, header = TRUE)
Out1 <- File[[W]]
Out2 <- File[[S]]
Out3 <- File[[A]]
sapply(split(File, list(Out1, Out2)), function(x) length(unique(x[[A]])))
}
U("testing.csv", "workclass", "sex", "age")
有几点需要注意。我不调用具有与字符串 File_name
相同的文件数据的对象。我也不使用包含 sapply
函数中原始对象的 age
数据列的 Out3
。我们只想使用字符串 A
对我们的拆分列表进行子集化,即 "age"。这对你有帮助吗?