R将数据框/列表插入到Dataframe元素中

时间:2015-07-01 19:49:27

标签: r dataframe

我想将数据框插入数据框元素,这样如果我调用:df1[1,1]我会得到:

[A B]
[C D]

我认为这在R中是可能的,但也许我错了。在我的一个项目中,我基本上使用50x50矩阵,我希望每个元素都包含包含数字和标记行的数据列。

尝试执行df1[1,1] <- df2之类的操作会产生以下警告

  

警告讯息:   在[<-.data.frame*tmp*,i,j,value = list(DJN.10 = c(0,3,:     替换元素1有144行来替换1行

调用df1[1,1]会产生0。我尝试以各种方式插入数据,与as.vector()as.list()一样,但没有成功。

最佳,

2 个答案:

答案 0 :(得分:4)

也许matrix对您有用,就像这样:

x <- matrix(list(), nrow=2, ncol=3)
print(x)
#     [,1] [,2] [,3]
#[1,] NULL NULL NULL
#[2,] NULL NULL NULL
x[[1,1]] <- data.frame(a=c("A","C"), b=c("B","D"))
x[[1,2]] <- data.frame(c=2:3)
x[[2,3]] <- data.frame(x=1, y=2:4)
x[[2,1]] <- list(1,2,3,5)
x[[1,3]] <- list("a","b","c","d")
x[[2,2]] <- list(1:5)
print(x)
#     [,1]   [,2]   [,3]  
#[1,] List,2 List,1 List,4
#[2,] List,4 List,1 List,2
x[[1,1]]
#  a b
#1 A B
#2 C D
 class(x)
#[1] "matrix"
 typeof(x)
#[1] "list"

有关详细信息,请参阅here

答案 1 :(得分:1)

data.frame中的每一列都可以是list。只需确保列表与data.frame中的行数一样长。

可以使用标准$表示法添加列。

示例:

x <- data.frame(matrix(NA, nrow=2, ncol=3))

x$X1 <- I(list(data.frame(a=c("A","C"), b=c("B","D")), matrix(1:10, ncol = 5)))
x$X2 <- I(list(data.frame(c = 2:3), list(1, 2, 3, 4)))
x$X3 <- I(list(list("a", "b", "c"), 1:5))

x
#             X1         X2           X3
# 1     1:2, 1:2        2:3      a, b, c
# 2 1, 2, 3,.... 1, 2, 3, 4 1, 2, 3,....
x[1, 1]
# [[1]]
#   a b
# 1 A B
# 2 C D
# 
x[2, 1]
# [[1]]
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    3    5    7    9
# [2,]    2    4    6    8   10