我正在写一篇关于R的文档,我想出了一个我无法理解的例子。让我们这样说:
mylist <- list(8, 1:10, c(4,7,25), matrix(1:30, ncol = 5), "my name is not Donald")
lapply(1:length(mylist), function(x) ifelse(is.numeric(mylist[[x]]),
mylist[[x]]*2, mylist[[x]]))我本来希望我的列表中的数字元素是2折叠的,而字符向量则是a。相反,列表中数值元素的结果只是每个元素的第一个组件,就好像ifelse的真正条件(即1)已经接管了lapply的x索引一样。有人能告诉我这背后的逻辑吗?我应该输入什么呢?非常感谢。最好的,大卫
发布于 2021-01-20 13:38:18
问题是条件只创建一个TRUE,而是尝试如下所示:
#Code
lapply(1:length(mylist),
function(x) ifelse(lapply(mylist[[x]],is.numeric),
mylist[[x]]*2, mylist[[x]]))问题是矩阵结构将丢失,因此@G.Grothendieck的答案将是一个更好的选择。
https://stackoverflow.com/questions/65810486
复制相似问题