在R中执行drop()函数时发出问题

时间:2015-07-20 11:47:59

标签: r

我试图找出drop()函数的用法。我阅读了文档,矩阵或数组可以作为函数的输入对象,但矩阵或对象的大小不会改变。有人可以解释它的实际用法及其工作原理吗?

我使用的是R版本3.2.1。代码段:

data1  <- matrix(data=(1:10),nrow=1,ncol=1)
drop(data1)

3 个答案:

答案 0 :(得分:0)

R具有非常酷的因子(有点类似于Stata中的标记水平)。不幸的是,即使您删除了一些数据,也没有特定级别的例子仍然存在,因此因素列表仍然存在。

# Create some fake data
x <- as.factor(sample(head(colors()),100,replace=TRUE))
levels(x)
x <- x[x!="aliceblue"]
levels(x) # still the same levels
table(x) # even though one level has 0 entries!

解决方案很简单:再次运行factor():

x <- factor(x)
levels(x)

如果您需要同时对多个因素执行此操作(与包含多列因子的data.frame一样),请使用gdata包中的drop.levels():

x <- x[x!="antiquewhite1"]
df <- data.frame(a=x,b=x,c=x)
df <- drop.levels(df)

答案 1 :(得分:0)

R矩阵是二维数组。 R有很多操作符和函数,使矩阵处理非常方便。

矩阵分配:

>A <- matrix(c(3,5,7,1,9,4),nrow=3,ncol=2,byrow=TRUE)
>A
     [,1] [,2]
[1,]    3    5
[2,]    7    1
[3,]    9    4

矩阵行和列数:

>rA <- nrow(A)
>rA
[1] 3
>cA <- ncol(A)
>cA
[1] 2

t(A)函数返回A:

的转置矩阵
>B <- t(A)
>B
     [,1] [,2] [,3]
[1,]    3    7    9
[2,]    5    1    4

矩阵乘法:

C <- A * A
C
     [,1] [,2]
[1,]    9   25
[2,]   49    1
[3,]   81   16

Matrix添加:

>C <- A + A
>C
     [,1] [,2]
[1,]    6   10
[2,]   14    2
[3,]   18    8

矩阵减法( - )和除法(/)操作......

有时矩阵需要按特定列排序,可以使用order()函数来完成。

以下是csv文件示例:

,t1,t2,t3,t4,t5,t6,t7,t8
r1,1,0,1,0,0,1,0,2
r2,1,2,5,1,2,1,2,1
r3,0,0,9,2,1,1,0,1
r4,0,0,2,1,2,0,0,0
r5,0,2,15,1,1,0,0,0
r6,2,2,3,1,1,1,0,0
r7,2,2,3,1,1,1,0,1

以下R代码将上述文件读入矩阵,并按列4排序,然后写入输出文件:

x <- read.csv("sortmatrix.csv",header=T,sep=",");

x <- x[order(x[,4]),];

x <- write.table(x,file="tp.txt",sep=",")

结果是:

"X","t1","t2","t3","t4","t5","t6","t7","t8"
"1","r1",1,0,1,0,0,1,0,2
"4","r4",0,0,2,1,2,0,0,0
"6","r6",2,2,3,1,1,1,0,0
"7","r7",2,2,3,1,1,1,0,1
"2","r2",1,2,5,1,2,1,2,1
"3","r3",0,0,9,2,1,1,0,1
"5","r5",0,2,15,1,1,0,0,0

答案 2 :(得分:-2)

DROP函数支持本机编译的标量用户定义函数。 从当前数据库中删除一个或多个用户定义的函数 要执行DROP FUNCTION,用户必须至少对该函数所属的模式具有ALTER权限,或者对该函数具有CONTROL权限。 如果数据库中有Transact-SQL函数或视图引用此函数并且是使用SCHEMA BINDING创建的,或者如果存在引用该函数的计算列,CHECK约束或DEFAULT约束,则DROP FUNCTION将失败。 如果存在引用此函数并已编制索引的计算列,则DROP FUNCTION将失败。

DROP FUNCTION {[schema_name。 ] function_name} [,... n]