Я пытаюсь написать код, который будет использовать имя столбца в качестве имени результата
В данный момент я могу просмотреть свой список файлов и извлечь данные, потому что структура файла всегда одинакова. Но я бы хотел использовать один и тот же подход для фреймов данных разных размеров.
Мой входной файл выглядит так:
aus = structure(list(X = c("John", "Frank", "Judy", "Tom", "Margaret",
"Jane"), Sydney = c(79L, 21L, 96L, 80L, 51L, 69L), Melbourne = c(17L,
13L, 42L, 86L, 2L, 69L), Perth = c(82L, 71L, 63L, 39L, 68L, 19L
), Adelaide = c(37L, 99L, 59L, 23L, 35L, 26L), Canberra = c(61L,
41L, 23L, 78L, 22L, 27L), Brisbane = c(79L, 71L, 19L, 45L, 85L,
20L)), class = "data.frame", row.names = c(NA, -6L))
И я могу получить результаты Джуди, используя следующее:
files = c("aus.csv")
read.data = function(files)
{
tmp = read.csv(list[i], row.names = 1)
Sydney = as.numeric(tmp["Judy",1])
Melbourne = as.numeric(tmp["Judy",2])
Perth = as.numeric(tmp["Judy",3])
Adelaide = as.numeric(tmp["Judy",4])
Canberra = as.numeric(tmp["Judy",5])
Brisbane = as.numeric(tmp["Judy",6])
results = c(list[i], Judy, Sydney, Melbourne, Perth, Adelaide, Canberra, Brisbane)
return(results)
}
list = files
datalist = as.list(1)
for(i in 1:length(list))
{
temp=vector()
datalist[[i]] = try(read.data(list[i]))
if(is.null(dim(temp)[1])){next}
}
dataframe = do.call(rbind, datalist)
colnames(dataframe) = c("report", "name", "Sydney", "Melbourne", "Perth", "Adelaide", "Canberra", "Brisbane")
Я хотел бы заменить этот раздел на некоторый код, который может искать имя (чтобы оно не было жестко запрограммировано):
Sydney = as.numeric(tmp["Judy",1])
Melbourne = as.numeric(tmp["Judy",2])
Perth = as.numeric(tmp["Judy",3])
Adelaide = as.numeric(tmp["Judy",4])
Canberra = as.numeric(tmp["Judy",5])
Brisbane = as.numeric(tmp["Judy",6])
results = c(list[i], Judy, Sydney, Melbourne, Perth, Adelaide, Canberra, Brisbane)
Для жизни я не могу отработать ту петлю, которая мне нужна. Кто-нибудь может указать мне правильное направление?
Я ищу тот же вывод, просто более динамичный способ сбора имен результатов из имен столбцов.
results = structure(c("aus.csv", "Judy", "96", "42", "63", "59", "23",
"19"), .Dim = c(1L, 8L), .Dimnames = list(NULL, c("report", "name",
"Sydney", "Melbourne", "Perth", "Adelaide", "Canberra", "Brisbane"
)))