r - 从函数的列表中返回时,数据框类型会发生变化
问题描述
我在一个函数中生成两个数据框并将它们返回到一个列表中
summarize_responses <- function(df, descriptor, subsetBy){
.
.
df_sum <- as.data.frame(df_sum)
df_sum_transpose <- as.data.frame(df_sum_transpose)
return_list <- list(df_sum, df_sum_transpose)
return(return_list)
}
在我的主要例程中,我按如下方式收集这些数据帧:
df_lst <- summarize_responses(df, INDEX_SCORES_BREAKOUTS[i], DAILY_INDEX_SCORES)
df_a <- df_lst[1]
df_b <- df_lst[2]
但如果我输入
Browse[2]> class(df_a)
[1] "list"
Browse[2]> typeof(df_a)
[1] "list"
我希望 df_a 和 df_b 将是数据帧,因为我已强制它们成为summarize_responses
. 但是这里出了点问题。虽然很容易通过键入来修复
df_a <- as.data.frame(df_lst[1])
df_b <- as.data.frame(df_lst[2])
我想了解为什么我的数据框变成了列表。
提前感谢您的解释
托马斯飞利浦
解决方案
当您有数据框列表时,使用单括号 ( [
) 访问列表中的元素总是会给您一个列表。考虑这个例子:
df_lst <- list(mtcars, iris)
class(df_lst[1])
#[1] "list"
这是因为使用[
,您可以从列表中选择超过 1 个元素。
df_lst[1:2]
如果要访问数据框,请使用[[
class(df_lst[[1]])
#[1] "data.frame"
这个问答也很有帮助。括号 [ ] 和双括号 [[ ]] 用于访问列表或数据框元素的区别
推荐阅读
- mysql - 如何按时间分组,如果mysql中没有数据计数为零?
- pdf - 如何在 puppeteer 中将多个 pdf 合并为一个 pdf?
- laravel - 我想验证数据库 laravel 8 中是否不存在数据
- android - 将硬编码字符串转换为字符串资源
- c# - 获取字典列表中的值计数
- python - 如何使用字符串布尔表达式过滤列表
- logging - YII2 日志目标不检查日志的类别并保存任何类别日志
- electron - 如何向电子更新程序提供私有 s3 存储桶凭据
- javascript - 如何在 ReactTextareaAutocomplete 中使用道具传递自定义 TextareaAutosize 组件?
- google-apps-script - 在谷歌表格的标题行之后添加数据