R 向量可以有属性的名字,apply可以生成一个向量,再把向量组合到数据框里面就可以了!

R 向量可以有属性的名字
属性以列表形式保存,其中所有元素都有名字。

R学习笔记(2):R中的数据类型和数据结构 本文最新版已更新至:http://thinkinside.tk/2013/05/09/r_notes_2_data_structure.html

class(size)
[1] “numeric”
typeof(size)
[1] “double”
attributes(size)
$names
[1] “MKO_DM_BL.HiC_Rep1” “MKO_DM_BL.HiC_Rep2” “MKO_DM_BL.HiC_Rep3” “MKO_DM_BL.HiC_Rep4” “MKO_DM_BL.HiC_Rep5”
[6] “MKO_DM_BL.HiC_Rep6” “MKO_DM_BL.HiC_Rep7” “MKO_GM_BL.HiC_Rep2” “MKO_GM_BL.HiC_Rep3” “MKO_GM_BL.HiC_Rep4”
[11] “MKO_GM_BL.HiC_Rep5” “MKO_GM_BL.HiC_Rep6” “WT_DM_BL.HiC_Rep1” “WT_DM_BL.HiC_Rep2” “WT_DM_BL.HiC_Rep3”
[16] “WT_DM_BL.HiC_Rep4” “WT_DM_BL.HiC_Rep5” “WT_DM_BL.HiC_Rep6” “WT_DM_BL.HiC_Rep7” “WT_DM_BL.HiC_Rep8”
[21] “WT_GM_BL.HiC_Rep1” “WT_GM_BL.HiC_Rep2” “WT_GM_BL.HiC_Rep3” “WT_GM_BL.HiC_Rep4” “WT_GM_BL.HiC_Rep5”
[26] “WT_GM_BL.HiC_Rep6”

#从例子可以看出,属性以列表形式保存,其中所有元素都有名字。
#names,可以为向量或列表的每个元素增加标签。
x = 1:6
attributes(x)
NULL
因为my_vector只是一个变量,它并没有维度属性。但是可以通过length()获取向量的长度
attr(x,‘names’) = c(‘a’,‘b’,‘c’)
attributes(x)
$names
[1] “a” “b” “c” NA NA NA

x
a b c
1 2 3 4 5 6

dim(x) = c(3,2)
attributes(x)
$dim
[1] 3 2

x
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
attr(x,“dim”) = c(2,3)
x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

尽管R的矩阵是按列存储的,但是可以通过把matrix()的byrow参数设置为TRUE,使矩阵元素按行排列。以下是使用byrow的一个例子:

m = matrix( c(1,2,3,4,5,6), nrow=2, byrow=T)

m

[,1] [,2] [,3]

[1,]    1    2    3

[2,]    4    5    6

尽管这样设置,但是矩阵本身依然是按列存储的,参数byrow改变的只是数据输入的顺序。当读取的数据文件是按这种方式组织时,可能会更方便。

vector <- c( 1:4 )

vrnames <- c( “row1”, “row2” )

vcnames <- c( “col1”, “col2” )

matrix( vector, nrow=2, byrow=TRUE, dimnames=list( vrnames, vcnames ) )

col1 col2

row1    1    2

row2    3    4

————————————————
版权声明:本文为CSDN博主「thoixy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/thoixy/article/details/40502631

apply可以生成一个向量,再把向量组合到数据框里面就可以了!

pp=apply(ma,2,sum)
str(pp)
num [1:4] 3 7 7 15

下面是增加列或者行,最基本的增加1列,可以通过创建新的列变量,然后再创建新的数据框,将新变量加入。如,创建新列New 需要注意的是要保证创建的新列长度与mydata列长度一致。还记得本课的开头说过的吗?矩阵只能包含一个类的数据。 因此,当我们尝试将字符向量与数字矩阵组合时,R被迫将数字强制为字符,因此使用双引号。这被称为隐式强制,因为我们没有去声明,R自动转换了。

因此,我们还有一个问题,即如何在不破坏数字数据完整性的情况下将患者姓名包括在表格中?这就要用到数据框了
要满足我们的需求,可以使用data.frame()函数。

my_data <- data.frame(patients, my_matrix)
my_data
patients X1 X2 X3 X4 X5
1 Bill 1 5 9 13 17
2 Gina 2 6 10 14 18
3 Kelly 3 7 11 15 19
4 Sean 4 8 12 16 20
可以看到结果里的数字,并没有被转成字符串。

原文链接:https://blog.csdn.net/weixin_39769406/article/details/113492466

https://blog.csdn.net/weixin_39769406/article/details/113492466?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161724580016780265466998%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161724580016780265466998&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-3-113492466.pc_search_result_no_baidu_js&utm_term=R%E5%90%91%E9%87%8F%E7%BB%84%E5%90%88%E5%88%B0%E6%95%B0%E6%8D%AE%E6%A1%86&spm=1018.2226.3001.4187
#选择列名中有字母"O"的列select(mydata,contains(“O”))

将列LER提取出来select(mydata,LER)

#以列pattern进行排序arrange(mydata,pattern)https://blog.csdn.net/weixin_34637138/article/details/113315213?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161724584916780262571174%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161724584916780262571174&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-113315213.pc_search_result_no_baidu_js&utm_term=R%E6%95%B0%E6%8D%AE%E6%A1%86%E5%8A%A0%E5%85%A5%E4%B8%80%E8%A1%8C%E6%88%96%E8%80%85%E4%B8%80%E5%88%97&spm=1018.2226.3001.4187
#按年份以降序排列arrange(mydata,desc(year))

ma <- matrix(c(1:4, 1, 6:8), nrow = 2)

ma
[,1] [,2] [,3] [,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
apply(ma,c(1,2),sum)
[,1] [,2] [,3] [,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
apply(ma,1,sum)
[1] 12 20
apply(ma,2,sum)
[1] 3 7 7 15
sum
function (…, na.rm = FALSE) .Primitive(“sum”)
fac
错误: 找不到对象’fac’
tapply(1:17, fac, sum, simplify = FALSE)
Error in tapply(1:17, fac, sum, simplify = FALSE) : 找不到对象’fac’
fac <- factor(rep(1:3, length = 4), levels = 1:5)
fac
[1] 1 2 3 1
Levels: 1 2 3 4 5
tapply(1:4, fac, sum)
1 2 3 4 5
5 2 3 NA NA
1:4
[1] 1 2 3 4
##5,2,3返回的是数字的index下标的对应数据的运算,比如fac的1类位置在1.4,对应1:4数据是1+4=5,2在fac的第二类,位置是2,对应数字是2
#当index不是因子时,可以用as.factor()把参数强制转换成因子

d <- factor(rep(c(“A”,“B”,“C”), 10), levels=c(“A”,“B”,“C”,“D”,“E”))
d
[1] A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C
Levels: A B C D E
table(d, exclude=“B”)
d
A C D E
10 10 0 0

x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
x
$a
[1] 1 2 3 4 5 6 7 8 9 10

$beta
[1] 0.04978707 0.13533528 0.36787944 1.00000000 2.71828183 7.38905610
[7] 20.08553692

$logic
[1] TRUE FALSE FALSE TRUE

lapply(x, quantile)
$a
0% 25% 50% 75% 100%
1.00 3.25 5.50 7.75 10.00

$beta
0% 25% 50% 75% 100%
0.04978707 0.25160736 1.00000000 5.05366896 20.08553692

$logic
0% 25% 50% 75% 100%
0.0 0.0 0.5 1.0 1.0

lapply中所要使用的函数,一定需要是输入为单一变量,输出为单一变量可以存至list中。
错误: unexpected input in "lapply中所要使用的函数?
同时,lapply(x,fun),这个x的格式很重要,如果灌入的是list,在使用的时候,其实是先把x[[1]],之后然后放入fun之中。也就是说,先拨开的list,然后再灌入。
错误: unexpected input in "同时?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值