Data.frames的Data.frame

时间:2018-10-03 21:15:54

标签: r dataframe recursion assignment-operator recursive-datastructures

我正在使用一个包含许多data.frames的data.frame。我试图在循环内访问这些sub-data.frames。在这些循环中,子数据帧的名称包含在字符串变量中。由于这是一个字符串,因此我可以使用[,]表示法从这些sub-data.frames中提取数据。例如X <- "sub.df",然后df[42,X]将输出与df$sub.df[42]相同的内容。

我正在尝试创建一个单行data.frame来替换sub-data.frames中的一行。 (我反复这样做,这就是为什么我的sub-data.frame名称位于字符串中的原因)。但是,我在将此新数据插入这些sub-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 :(得分:0)

您可以不使用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