我试图找出drop()
函数的用法。我阅读了文档,矩阵或数组可以作为函数的输入对象,但矩阵或对象的大小不会改变。有人可以解释它的实际用法及其工作原理吗?
我使用的是R版本3.2.1。代码段:
data1 <- matrix(data=(1:10),nrow=1,ncol=1)
drop(data1)
答案 0 :(得分:0)
# 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]