2016-10-26 3 views
-1

Я делаю этот код, используя for-statement. (Основная цель этого кода в список различных веб-страниц, которые получаются с помощью HTTR и rvest)Вставить несколько элементов в R

r = "asdgkjkhdf" 
t = "osrt" 

all = c() 
for(i in 1:400) 
{ 
    y = paste(r, i, sep = '') 
    d = paste(y, t, sep = '') 
    all = c(all, d) 
} 
all 

Я получил такие вещи (вставленные цифры на самом деле получить накопленный в каждой результаты)

[1]asdgkjkhdf1osrt 
[2]asdgkjkhdf12osrt 
[3]asdgkjkhdf123osrt 
[4]asdgkjkhdf1234osrt 
... 

Но я хочу получить такие результаты, независимо от того, сколько чисел я использую для функции 'for().

[1]asdgkjkhdf1osrt 
[2]asdgkjkhdf2osrt 
... 
[400]asdgkjkhdf400osrt 

как они выше

Что я должен изменить для того, чтобы иметь то, что я хочу, чтобы привести? Должен ли я использовать paste(substr(), substr(), sep='')?

+4

'все <- paste0 (г, 1: 400, т)' – Roland

+0

Я получил [1] asdgkjkhdf123441osrt [2] asdgkjkhdf123442osrt ... – Rcoding

+0

Если вы действительно хотите использовать для-заявления: 'все = с() ; for (i in 1: 400) all = c (all, paste0 (r, i, t)); '. Тем не менее, решение без заявления, которое дает Роланд, конечно, предпочтет. – Michiel

ответ

1

Если вы действительно хотите использовать для-заявления вы можете использовать следующую

r = "asdgkjkhdf" 
t = "osrt" 
all = c() 

for (idx in 1:400) 
    all = c(all, paste0(r, idx, t)) 

Однако в R следует отдавать предпочтение код без для-заявлений, так как, в общем, это менее читаемыми и ухудшает производительность , Решение без для-оператор (данный Роланд в комментариях) равно

all <- paste0(r, 1:400, t) 

Обратите внимание, что paste0("string") только краткая запись для paste("string", sep='').