R 运行函数时没有输出
对于R和编程来说,我是新手,在本课程的作业中回顾了所有可能的线程,但无法找出问题所在。我知道这个函数可以使用Lappy和更多的工具进行优化,但我想知道为什么这个函数不起作用。我觉得关于这个功能的一些问题稍微激怒了一些用户。老实说,我查看了相关的帖子,我不知道我能为这个特定的bug做些什么R 运行函数时没有输出,r,csv,R,Csv,对于R和编程来说,我是新手,在本课程的作业中回顾了所有可能的线程,但无法找出问题所在。我知道这个函数可以使用Lappy和更多的工具进行优化,但我想知道为什么这个函数不起作用。我觉得关于这个功能的一些问题稍微激怒了一些用户。老实说,我查看了相关的帖子,我不知道我能为这个特定的bug做些什么 pollutantmean <- function (directory, pollutant, id) { #Create the data frame with the data from
pollutantmean <- function (directory, pollutant, id) {
#Create the data frame with the data from the 332 files
files <- list.files(getwd())
df <- data.frame()
id <- 1:332
for (i in 1:length(id)) {df <- rbind(df, read.csv(files[i]))
if (pollutant=="nitrate"){
#Create a subset for nitrate values of df
df_nitrate <- df[df$ID==id[i], "nitrate"]
#Take mean of df_nitrate
mean (df_nitrate, na.rm = TRUE)
} else {
#Create a subset for sulfate values of df
df_sulfate <- df[df$ID==id[i],"sulfate"]
#Take mean of df_sulfate
mean(df_sulfate, na.rm = TRUE)
}
}
}
操作系统是Windows10
欢迎提出任何建议或意见。提前感谢。您的
for
循环将环绕您的if块。R函数在循环中不会返回值(除非您使用return
函数,这不是您想要在这里执行的操作)
PollutanMean究竟是什么问题?错误消息是什么?在df[df$ID==ID[i],“norate”]
处,由于您正在加载指定ID
的CSV文件,按ID进行过滤似乎是多余的。我认为在加载所有CSV文件后,您需要计算for循环外的平均值。@MaxPD没有消息,就是这样。@KotaMori id用于特定文件。每个文件都有一个硝酸盐和硫酸盐列。但是,当我按照您的建议将循环限制为rbind时,它只处理第一个文件。因为您有df$ID==ID[I]
,所以它只返回I
的平均值。如果您想计算多个文件的平均值,请删除这个partIn事实,这是我最初使用的,但它只返回第一个文件的平均值。但现在至少我知道了为什么没有输出。谢谢你,亚当。
pollutantmean(getwd(), "nitrate", 23)
> traceback()
No traceback available
> debug(pollutantmean)
>
pollutantmean <- function (directory, pollutant, id) {
#Create the data frame with the data from the 332 files
files <- list.files(getwd())
df <- data.frame()
id <- 1:332
for (i in 1:length(id)) {df <- rbind(df, read.csv(files[i]))
# close for loop HERE
}
if (pollutant=="nitrate"){
#Create a subset for nitrate values of df
df_nitrate <- df[df$ID==id[i], "nitrate"]
#Take mean of df_nitrate
mean (df_nitrate, na.rm = TRUE)
} else {
#Create a subset for sulfate values of df
df_sulfate <- df[df$ID==id[i],"sulfate"]
#Take mean of df_sulfate
mean(df_sulfate, na.rm = TRUE)
}
# not HERE
#}
}