2015-07-29 3 views
1

Я изо всех сил пытаюсь сделать что-то, что я знаю, должно быть простым.извлечение из списка и сохранение в csv

У меня есть список dataframes так:

a <- rep(1, 10) 
b <- rep(3.6, 10) 
foo1 <- cbind(a, b) 

d <- rep(2, 8) 
b <- rep(4.9, 8) 
foo2 <- cbind(d, b) 

data <- list(foo1, foo2) 

Я хочу, чтобы извлечь 2-й столбец из каждой dataframe, либо путем индексации или по имени столбца, и сохранить в файл CSV с помощью write.table и с тем же именем, что и dataframe. Я пробовал много вещей --- для петель и lapply и sapply.

Я получаю множество сообщений об ошибках, но в основном следующие:

In if (file == "") file <- stdout() else if (is.character(file)) { : the condition has length > 1 and only the first element will be used

, которую я не могу решить.

Я знаю, что я не правильно индексирую. Помоги мне, пожалуйста!

+0

'lapply (data, function (x) x [, 2, drop = FALSE])' – akrun

+0

Какой код вы пробовали, что привело к такой ошибке? – MrFlick

+1

Это не dataframes. –

ответ

1

Вы можете использовать цикл для перебора над полями data:

for (i in 1:length(data)) { 
    col <- data[[i]][,2] 
    fname <- paste("foo", i, ".csv", sep="") 
    write.table(col,fname) 
} 

Команда write.table, скорее всего, потребуется немного настройки, пока вы не получите данные в формате, который вы хотите.

+0

Спасибо! Я тоже пробовал этот метод и имел это все правильно, за исключением того, что вы индексировали «данные» во второй строке кода. Я продолжал пытаться просто использовать [i] в ​​вариантах без ссылки на «данные». Теперь у меня есть два чистых метода. – Sundstrom

Смежные вопросы