如何通过列表列表在数据框中创建列?

时间:2020-08-13 06:19:21

标签: r

我想用mydates和val创建一个数据框。 mydates是日期列表的列表,我希望dataframe列是每一行的列表。这可能吗?我不断收到错误消息,指出行长度不同,但是当我使用length()检查时,mydate和val都返回100。

end_date <- as.Date('2010-03-07')   

mydate <- list()

for(i in 1:100){
  dates <- sample(1:40,1)
  mydate[[i]] <- list(as.Date(sample( as.numeric(start_date): as.numeric(end_date), dates, 
                                     replace = T), 
                             origin = '1970-01-01'))
}

vals <- sample(1:1000, 100, replace=T)
data.frame(mydate, vals)

2 个答案:

答案 0 :(得分:0)

一种可能性是使用tibbles而不是data.frames

library(tidyverse)

x <- tibble(mydate = flatten(mydate), vals = vals) 

x不是data.frame,而是tibble。您可以根据需要将x转换为data.frame:

x2 <- as.data.frame(x)

答案 1 :(得分:0)

您的方法存在一些问题。您可以尝试以下方法。

start_date

(1)-您的代码中缺少start_date。我选择了任意list(),请根据您的数据进行更正。

(2)-当您已经知道长度时,不使用data.frame,而是使用固定长度初始化一个空列表。这非常有效。

(3)-您可​​以直接创建日期序列,而不必创建数字序列,然后将其转换为日期。

(4)-您无法在 var uploadTask = FirebaseStorage.getInstance().reference.child("images").child(imageName).putBytes(data) uploadTask.addOnFailureListener { // Handle unsuccessful uploads Toast.makeText(this, "Upload failed, try again.", Toast.LENGTH_SHORT).show() }.addOnSuccessListener { val ref = FirebaseStorage.getInstance().reference.child("images").child(imageName) ref.downloadUrl .addOnCompleteListener { task -> if (task.isSuccessful) { val downloadUrl = task.result // taskSnapshot.metadata contains file metadata such as size, content-type, etc. // ... val intent = Intent(this, ChooseUserActivity::class.java) intent.putExtra("imageName", imageName) intent.putExtra("imageUrl", downloadUrl.toString()) intent.putExtra("message", messageEditText?.text.toString()) startActivity(intent) } } } 调用中添加矢量列表,请单独添加。