Data.frame из Data.frames - PullRequest
       34

Data.frame из Data.frames

0 голосов
/ 04 октября 2018

Я использую data.frame, который содержит много data.frames.Я пытаюсь получить доступ к этим sub-data.frames в цикле.В этих циклах имена sub-data.frames содержатся в строковой переменной.Поскольку это строка, я могу использовать нотацию [,] для извлечения данных из этих вложенных фреймов.например, X <- "sub.df", а затем df[42,X] будет выводить то же самое, что и df$sub.df[42].

Я пытаюсь создать одну строку data.frame, чтобы заменить строку внутри sub-data.frames.(Я делаю это неоднократно, и поэтому мое имя sub-data.frame находится в строке).Однако у меня возникают проблемы при вставке этих новых данных в эти суб-data.frames.Вот MWE:

#Set up the data.frames and sub-data.frames
sub.frame <- data.frame(X=1:10,Y=11:20)
df <- data.frame(A=21:30)
df$Z <- sub.frame
Col.Var <- "Z"

#Create a row to insert
new.data.frame <- data.frame(X=40,Y=50)

#This works:
df$Z[3,] <- new.data.frame

#These don't (even though both sides of the assignment give the correct values/dimensions):

df[,Col.Var][6,] <- new.data.frame #Gives Warning and collapses df$Z to 1 dimension

df[7,Col.Var] <- new.data.frame #Gives Warning and only uses first value in both places

#This works, but is a work-around and feels very inelegant(!)
eval(parse(text=paste0("df$",Col.Var,"[8,]  <- new.data.frame")))

Есть ли лучшие способы сделать этот вид вставки?Учитывая мой опыт работы с R, я чувствую , как будто это должно быть легко, но я не могу понять это.

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете сделать это без использования sub-data.frames:)

#Set up the data.frames and sub-data.frames
sub.frame <- data.frame(X=1:10,Y=11:20)
df <- data.frame(A=21:30, sub.frame)

#Create a row to insert
new.data.frame <- data.frame(X=40,Y=50)

# This works, too! 
df[6,colnames(sub.frame)] <- new.data.frame

> df
    A  X  Y
1  21  1 11
2  22  2 12
3  23  3 13
4  24  4 14
5  25  5 15
6  26 40 50
7  27  7 17
8  28  8 18
9  29  9 19
10 30 10 20
...