2015-10-31 3 views
0

У меня есть список/dataframe, такие какКак я могу объединить различные элементы списка?

a b c d e f g VALUE 
1 0 1 0 0 0 1 934 

, что я хотел сделать, это напечатать,

1010001 без использования для цикла. поэтому в основном, возьмите эти целые числа в виде строки и объедините их во время печати?

+0

Вы хотите сделать это для каждой строки или только для одной строки? Или ваш кадр данных имеет только одну строку за пределами заголовков? Почему вы не хотите использовать цикл for? –

+1

, если это dataframe, тогда 'do.call (paste0, dat)' должен это сделать. Если нет, можете ли вы обновить свой вопрос с помощью результатов 'dput (head (dat))' please – user20650

+0

В этом простом случае вам не нужен цикл: 'paste (dataframe [1,1: 7], collapse =" ") ' Где dataframe - ваше имя для вашей файловой системы – maRtin

ответ

0

Я определяю функцию, которая усекает последнее значение и вставляет все остальные элементы вместе. И затем используйте «применить» на всей информационной карте

cc <- data.frame(a=1,b=0,c=1,d=0,e=0,f=0,g=1,VALUE=934) 

# This function contains the all the jobs you want to do for the row. 
myfuns <- function(x, collapse=""){ 
    x <- x[-length(x)] # truncate the last element 
    paste(x,collapse="") # paste all the integers together 
} 

# the second argument "MARGIN=1" means apply this function on the row 
apply(cc,MARGIN=1,myfuns2) # output: "1010001" 
+0

OP хотел сделать это без использования цикла 'for'. Возможно, ваше предложение будет еще хуже. Это можно легко и эффективно разрешить просто 'do.call (paste, c (sep =" ", cc [-length (cc)]))' –

+0

@DavidArenburg Большое спасибо за предложение. Я не знаю, что на самом деле произошло в «apply». Вы имеете в виду, применяете ли внутренний цикл 'for'? – xirururu

+1

xirururu, yes apply использует цикл for, в r code ... type 'apply' в консоли, чтобы увидеть код функции – user20650

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