我想将数据框插入数据框元素,这样如果我调用: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()
一样,但没有成功。
最佳,
答案 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