[英]Accessing particular cells within dataframes organized into list in R in a “vectorized” way
這是我的第一個問題,對不起可能的錯誤。
在流式傳輸jason文件后,我有一個“tt”數據幀列表。 一些數據幀是空的,一些有預定義的結構,這里是一個例子:
> str(tt)
List of 2
$ :'data.frame': 0 obs. of 0 variables
$ :'data.frame': 2 obs. of 2 variables:
..$ key : chr [1:2] "issue_id" "letter_id"
..$ value: chr [1:2] "43" "223663"
> tt
[[1]]
data frame with 0 columns and 0 rows
[[2]]
key value
1 issue_id 43
2 letter_id 223663
我想得到一個列(例如名為“t”),其中issue_id是“tt”結構,所以
t [1] = NA(或NULL)
t [2] = 43
我可以像訪問這樣的列表元素來訪問數據幀
> tt[[1]][1,2]
NULL
> tt[[2]][1,2]
[1] "43"
我怎么能以“矢量化”的方式做到這一點? 嘗試了不同的事情,沒有成功
> t <- tt[[]][1,2]
Error in tt[[]] : invalid subscript type 'symbol'
> t <- tt[][1,2]
Error in tt[][1, 2] : incorrect number of dimensions
> t <- tt[[]][1][2]
Error in tt[[]] : invalid subscript type 'symbol'
> t <- tt[][1][2]
> t
[[1]]
NULL
我想這應該是非常簡單的事情
我們可以使用lapply
循環遍歷list
。 由於存在空元素或者行數為零,我們跳過它並從其他元素中提取“值”。
lapply(tt, function(x) if(!(is.null(x)|!nrow(x))) with(x, value[key=="issue_id"]))
正如@MikeRSpencer在評論中提到的,如果我們需要提取第一個“價值”
sapply(tt, function(x) if(!(is.null(x)|!nrow(x))) x$value[1])
它將返回一個vector
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.