2013-09-26 2 views
1

Я хочу создать много переменных на нескольких отдельных кадрах данных, которые затем объединится в один грандиозный фрейм данных.R Loop Script для создания многих, многих переменных

Каждый лист обозначается буквой (имеется 24), и каждый лист вмещает где-то между 100-200 переменных. Я мог бы написать ее как таковую:

a$varible1 <- NA 
a$variable2 <- NA 
. 
. 
. 
w$variable25 <- NA 

Это может/будет получить уродливые, и я хотел бы написать цикл или использовать вектор, чтобы сделать работу. У меня есть чертовски время, делая это, хотя.

Мне нужен сценарий, который позволит мне указать форму, а затем просто наклеить числа на нее.

Так,

a$variable[i] <- NA 

где [я] получает пришитые фактической переменной, созданной.

+0

Просьба уточнить. Вы хотите читать файлы? Вы хотите назначить значения предварительно выделенным data.frames? Если да, откуда и почему? – Roland

+0

Спасибо за ответ. Я могу читать файлы без проблем. Я просто хочу назначить каждый dataframe (a через w) переменные из каждой другой группы. Все переменные, которые я хочу создать с помощью цикла, будут принимать значение NA – user2340913

+0

. Ваш запрос не имеет для меня никакого смысла. Сожалею. – Roland

ответ

2

Я только что узнал этот аккуратный маленький трюк из @eddi

#created some random dataset with 3 columns 
library(data.table) 
     a <- data.table(
     a1 = c(1,5), 
     a2 = c(2,1), 
     a3 = c(3,4) 
     ) 

#assuming that you now need to ad more columns from a4 to a200 
# first, creating the sequence from 4 to 200 
     v = c(4:200) 
# then using that sequence to add the 197 more columns 
     a[, paste0("a", v) := 
        NA] 


# now a has 200 columns, as compared to the three we initiated it with 
     dim(a) 
     #[1] 2 200 
+0

Не могли бы вы рассказать о том, что происходит в этом коде? Я не совсем понятен, хотя похоже, что это может быть полезно. – user2340913

+0

Добавлено. Это помогает? – TheComeOnMan

+0

Да, большое спасибо! – user2340913

0

Я не думаю, что вы на самом деле это нужно, хотя, кажется, думают так по какой-то причине.

Может быть что-то вроде этого:

a <- as.data.frame(matrix(NA, ncol=10, nrow=5)) 
names(a) <- paste0("Variable", 1:10) 

print(a) 
# Variable1 Variable2 Variable3 Variable4 Variable5 Variable6 Variable7 Variable8 Variable9 Variable10 
# 1  NA  NA  NA  NA  NA  NA  NA  NA  NA   NA 
# 2  NA  NA  NA  NA  NA  NA  NA  NA  NA   NA 
# 3  NA  NA  NA  NA  NA  NA  NA  NA  NA   NA 
# 4  NA  NA  NA  NA  NA  NA  NA  NA  NA   NA 
# 5  NA  NA  NA  NA  NA  NA  NA  NA  NA   NA 
+0

Это действительно работает отлично! – user2340913

0

Если вы хотите переменные с разными типами:

p <- 10 # number of variables 
N <- 100 # number of records 
vn <- vector(mode="list", length=p) 
names(vn) <- paste0("V", seq(p)) 
vn[1:8] <- NA_real_ # numeric 
vn[9:10] <- NA_character_ # character 
df <- as.data.frame(lapply(vn, function(x, n) rep(x, n), n=N)) 
Смежные вопросы