R编程拉普拉
错误来了。上面说尺寸不正确R编程拉普拉,r,R,错误来了。上面说尺寸不正确 lapply(s, colMeans(s[,c("Ozone","Solar.R","Wind")])) 也显示了相同的错误 lapply(airquality, function(x)colMeans(x)) 这段代码运行得非常好 但是: f您的split函数返回一个列表,但您正在像处理数组或数据帧一样处理它 错误来自于s[,c(“臭氧”、“太阳能”、“风能”)],因为它是一个列表,所以不能以这种方式细分。试一试 f<-function(x){
lapply(s, colMeans(s[,c("Ozone","Solar.R","Wind")]))
也显示了相同的错误
lapply(airquality, function(x)colMeans(x))
这段代码运行得非常好
但是:
f您的split函数返回一个列表,但您正在像处理数组或数据帧一样处理它
错误来自于s[,c(“臭氧”、“太阳能”、“风能”)]
,因为它是一个列表,所以不能以这种方式细分。试一试
f<-function(x){
colMeans(x[,c("Ozone","Solar.R","Wind")])}
f(s) #error incorrect dimensions
class(s) # class of s is list
f(airquality) #gives mean of each column
你会发现这是可行的,就像
s$`9`[,c("Ozone","Solar.R","Wind")]
是一个数据帧
在第一次尝试中,您不是在提供函数,而是在s上计算的函数。由于不能像上面那样操作,对其调用函数也会导致相同的错误,因为函数的输入一开始就有问题
您的第二次尝试失败了,因为Lappy最终将一列一列地提供给colMeans函数,该函数需要二维数组(您已经为它提供了一维数组)
最后一个调用工作的原因是函数
s$`9`
可以对列表的每个项调用,因为每个项都是数据帧。lappy函数只是将其应用于该列表中的每个项目
function(x)colMeans(x[,c("Ozone","Solar.R","Wind")])
这是正确的方法
另一种方法是使用by函数
lapply(s,function(x)colMeans(x[,c("Ozone","Solar.R","Wind")]))
split函数返回一个列表,但您正在像处理数组或数据帧一样处理它
错误来自于s[,c(“臭氧”、“太阳能”、“风能”)]
,因为它是一个列表,所以不能以这种方式细分。试一试
f<-function(x){
colMeans(x[,c("Ozone","Solar.R","Wind")])}
f(s) #error incorrect dimensions
class(s) # class of s is list
f(airquality) #gives mean of each column
你会发现这是可行的,就像
s$`9`[,c("Ozone","Solar.R","Wind")]
是一个数据帧
在第一次尝试中,您不是在提供函数,而是在s上计算的函数。由于不能像上面那样操作,对其调用函数也会导致相同的错误,因为函数的输入一开始就有问题
您的第二次尝试失败了,因为Lappy最终将一列一列地提供给colMeans函数,该函数需要二维数组(您已经为它提供了一维数组)
最后一个调用工作的原因是函数
s$`9`
可以对列表的每个项调用,因为每个项都是数据帧。lappy函数只是将其应用于该列表中的每个项目
function(x)colMeans(x[,c("Ozone","Solar.R","Wind")])
这是正确的方法
另一种方法是使用by函数
lapply(s,function(x)colMeans(x[,c("Ozone","Solar.R","Wind")]))
请检查一下你们的开合支架好吗?这真是一团糟。(1)lappy(s,colMeans)(s[,c(“臭氧”,“太阳能.R”,“风”)
不起作用,因为它是错误的。请参见?lappy
(2)lappy(空气质量,函数(x)colMeans(x))
抛出一个错误,因为您试图计算向量上的colMeans
(空气质量的列被强制为没有维度的向量)。(3)函数
不是在创建维度-在您的工作示例中,您的函数应用于列表s
的元素,每个元素都是数据框
,因此易于计算colMeans
。为了澄清,lapply
将函数应用于X
的每个元素s
是一个data.frame
,而airquality
的每个元素都是一个向量(data.frame的元素是它的列)。要使用colMeans
你需要列。请不要破坏为改进你的问题所做的编辑。lappy
正是在做我上面所说的。如果你做了lappy(airquality,I)
,您可能会更清楚地看到lappy
迭代的“元素”是什么。该函数应用于这些元素中的每一个。现在,您希望能够在这些向量中的任何一个上使用colMeans
?否。现在尝试lappy(s,I)
。将colMeans
应用于这些元素更有意义,因为它们是具有列的data.frames。请注意lappy
并不是只对列表进行操作,例如lappy(1:10,sqrt)
。lappy
中的l
是因为它返回一个列表(与sapply(1:10,sqrt)
)。你能检查一下你的开始和结束括号吗?太乱了。(1)lappy(s,colMeans)(s[,c(“臭氧”,“太阳能.R”,“风”)
不起作用,因为它是错误的。请参见?lappy
(2)lappy(空气质量,函数(x)colMeans(x))
抛出一个错误,因为你试图计算向量上的colMeans
(空气质量的列被强制为没有维度的向量)。(3)函数
不是在创建维度-在您的工作示例中,您的函数应用于列表s
的元素,每个元素都是数据框
,因此易于计算colMeans
。为了澄清,lapply
将函数应用于X
的每个元素s
是一个data.frame
,而airquality
的每个元素都是一个向量(data.frame的元素是它的列)。要使用colMeans
你需要列。请不要破坏为改进你的问题所做的编辑。lappy
正是在做我上面所说的。如果你做了lappy(airquality,I)
,您可能会更清楚地看到lappy
迭代的“元素”是什么。该函数应用于这些元素中的每一个。现在,您希望能够在这些向量中的任何一个上使用colMeans
?否。现在尝试lappy(s,I)
。将colMeans
应用于这些元素更有意义,因为它们是具有列的data.frames。请注意lappy
并不是只对列表进行操作,例如lappy(1:10,sqrt)
。lappy
中的l
是因为它返回一个列表(与sapply(1:10,sqrt)
).也与本次讨论相关-也与本次讨论相关-