为什么我不能在具有非数值数据帧的列表上使用 sapply (R)?

问题描述 投票:0回答:1

我有一个包含 28 个数据帧的列表,从第 1 列到第 3 列的每个数据帧都有非数值,我想使用 sapply 从第 4 列到第 22 列求和。但是我做不到所以...有一种方法可以忽略具有非数字值或其他可以提供我想要的功能的列吗?

data = data.frame(x1 = letters[2:6],  
x2 = 'X',  
x3 = 5:9)

data2 = data.frame(x4 = letters[7:11],  
x5 = 'Y',  
x3 = 10:14)

teste_lista=list(data,data2)

sapply(teste_lista,sum)

return
'only defined on a data frame with all numeric-alike variables'
r list sapply
1个回答
1
投票

就像

sum(iris)
没有意义(因为那个里面有
factor
),它在这里不起作用。也许是这样的:

data = data.frame(x1 = letters[2:6],  
x2 = 'X',  
x3 = 5:9)

data2 = data.frame(x4 = letters[7:11],  
x5 = 'Y',  
x3 = 10:14)

sapply(teste_lista, function(z) sum(z[sapply(z, is.numeric)]))
# [1] 35 60
© www.soinside.com 2019 - 2024. All rights reserved.