我想从列表中提取第一个和第二个值。我能够毫无问题地提取第一个值。但是,当我尝试提取第二个值时,它给我一个错误,因为并非suggestion
列中的所有列表都具有多个值。如何从suggestion
的{{1}}列中提取第二个值,并为那些没有第二个值的人生成NA?
下面是我为获得第一个建议而编写的代码,但是当我这样做时
mydf_1
它给出此错误:
mydf_1$second_suggestion <- lapply(mydf_1$suggestion, `[[`, 2)
谢谢。
Error in FUN(X[[i]], ...) : subscript out of bounds
答案 0 :(得分:0)
在尝试提取感兴趣的元素之前,您可以先检查每个列表的长度。另外,我建议使用sapply,以便返回一个字符向量,而不是另一个列表。
第一个建议:
index <- 1
sapply(mydf_1$suggestion, function(x) {if(length(x) < index) {NA} else {x[[index]]}})
对于第二个建议,依此类推:
index <- 2
sapply(mydf_1$suggestion, function(x) {if(length(x) < index) {NA} else {x[[index]]}})
如果您需要自动化的话,可以用更多的代码将其包装到更大的函数中。
从理论上讲,您可以使用is.null
(请参阅How to test if list element exists?)进行测试,但是尝试该方法仍然遇到相同的错误。