我有一个data.frame dim =(200,500)
我想在数据框的每一列上执行onplaying="this.controls=false"
并附加到列表中。这就是我正在尝试的:
shaprio.test
然而这是失败的。一些指针? (背景主要是python,R用户不多)
答案 0 :(得分:2)
考虑lapply()
,因为传入它的任何数据帧都会对列运行操作,返回的列表将等于列数:
colstoremove <- lapply(I.df.noconv, function(col) shapiro.test(col)[2])
答案 1 :(得分:1)
以下是
中发生的事情for (i in range(dim(I.df.nocov)[2]))
为了举例,我假设I.df.nocov
包含100行和5列。
dim(I.df.nocov)
是I.df.nocov
维度的向量,即c(100,5)
dim(I.df.nocov)[2]
是I.df.nocov
的第二维,即5
range(x)
是一个2元素向量,包含x的最小值和最大值。例如,范围(c(4,10,1))是c(1,10)。所以range(dim(I.df.nocov)[2])
是c(5,5)。
因此,循环迭代两次:第一次i = 5,第二次i = 5。毫不奇怪它失败了!
问题是R的函数range
和具有相同名称的Python函数完全不同。相当于Python的range
称为seq
。例如,seq(5)=c(1,2,3,4,5)
,seq(3,5)=c(3,4,5)
和seq(1,10,2)=c(1,3,5,7,9)
。您也可以写1:n
,它与seq(n)
相同,m:n
与seq(m,n)
相同(但&#39;的优先级为:&#39;是非常高,因此1:2*x
被解释为(1:2)*x
。
通常,如果某些内容在R中不起作用,则应该从内部到外部打印子表达式。如果某个子表达式太大而无法打印,请使用str(x)(str表示&#34;结构&#34;)。永远不要认为Python和R中的函数是相同的!如果有一个具有相同名称的函数,它通常会做不同的事情。
在旁注中,您可以只写dim(I.df.nocov)[2]
而不是ncol(I.df.nocov)
(还有一个函数nrow
)。