В соответствии со следующим требованием я написал функцию complete.R
Требование в тесте 2 для программирования R (Coursera) : Напишите функцию, которая читает каталог, полный файлови сообщает количество полностью наблюдаемых случаев в каждом файле данных.Функция должна возвращать фрейм данных, где первый столбец - это имя файла, а второй столбец - количество завершенных дел.
Вот мой код завершения. R:
complete <- function(directory, id = 1:332) {
location <- paste(getwd(), directory, sep="/")
filenames <- list.files(location, full.names = TRUE)
dat <- data.frame()
for(i in id) {
data <- read.csv(filenames[i])
data <- na.omit(data)
df <- data.frame("id" = i, "nobs" = nrow(data))
dat <- rbind(dat, df)
}
dat
}
Но когда я ввожу следующий код из теста:
set.seed(42)
cc <- complete("specdata", 332:1)
use <- sample(332, 10)
print(cc[use, "nobs"])
Мой вывод "87 96 576 76 237 4 121 117 361 932", даже не является ни одним из параметров в викторине.Правильный вывод должен быть «711 135 74 445 178 73 49 0 687 237».
Я пробовал использовать демонстрационные данные, и все они работают.Выходные данные такие же, как у демонстрационных результатов.
complete("specdata", 1)
## id nobs
## 1 1 117
complete("specdata", c(2, 4, 8, 10, 12))
## id nobs
## 1 2 1041
## 2 4 474
## 3 8 192
## 4 10 148
## 5 12 96
complete("specdata", 30:25)
## id nobs
## 1 30 932
## 2 29 711
## 3 28 475
## 4 27 338
## 5 26 586
## 6 25 463
complete("specdata", 3)
## id nobs
## 1 3 243
Так что я не мог понять это.С нетерпением ждем ваших идей.Спасибо.
Из-за версии R образец изменен.Я использую R3.6.0, в то время как ответы на викторины генерируются в более старой версии.Вот предложение по решению от учебного форума Coursera:
> vstr <- "3.5.1" ## This choice works, you do not
## need to have this version of R on your computer
> RNGversion(vstr) ## do this once in your R session
## before taking any quiz questions using the sample function
## This "tells" R to run the random number generators
## from that version of R
## It returns a warning saying that version of sample is
## not "best"
Warning message:
In RNGkind("Mersenne-Twister", "Inversion", "Rounding") :
non-uniform 'Rounding' sampler used
Затем запустите скрипт и введите код из викторины.
Теперь это работает!Спасибо.