R-往一个list某列中写入新的数据append(),查找列名 names(sapply()及list相关操作

之前写过一篇文章是往文本文件中不断写入数据时用到了append=T,

今天用到append()

1.如何往list某列末尾添加数据?

直接用append(某list,要写入的数据)


append(x, values, after = length(x))

Arguments

x

the vector to be modified.

values

to be included in the modified vector. 计划贴入的对象

after

a subscript, after which the values are to be appended. 表示想在x中贴的位置



举例:

例一:

> L1
$p1
[1] 2 3 4 5
$p2
[1] 10 11 12 13 14 15

> append(L1$p1,13)
[1]  2  3  4  5 13

例二:

> append(1:5, 0:1, after = 3)
[1] 1 2 3 0 1 4 5


2. list中查找列名

使用names(sapply(list, names))

举例:

> mylist <- list("a"=c(1,2),"b"=c(3,4),"c"=c(5,6))
> mylist

$a
[1] 1 2
$b
[1] 3 4
$c
[1] 5 6

> names(sapply(mylist, names))
[1] "a" "b" "c"
> sapply(mylist, names)
$a
NULL
$b
NULL
$c
NULL

参考链接: https://stat.ethz.ch/pipermail/r-help/2011-January/265633.html


3. 查找某个变量名是否已经存在于List中

方法一:match(变量名,list所有变量集)

举例:

> match("a",nameslist)
[1] 1

方法二: is.element(变量名,list所有变量集)

举例:

> is.element('a',nameslist)
[1] TRUE


如何将一个动态的变量名赋给list做列名?

举例:

> names<-ru1405_1021$BUY1[1]

> names
[1] 20625
> test<-list(names=ru1405_1021$BUY1[1])
> test

$names
[1] 20625

如果想把ru1405_1021$BUY1[i]作为test的列名,

如果直接增加列,结果如下,杯具

> test$ru1405_1021$BUY1[2]<-ru1405_1021$BUY1[2]
> test
$names
[1] 20625
$ru1405_1021
$ru1405_1021$BUY1
[1]    NA 20620

> name<-ru1405_1021$BUY1[2]
> test$name<-ru1405_1021$BUY1[2]

> test

$names
[1] 20625
$ru1405_1021
$ru1405_1021$BUY1
[1]    NA 20620
$name
[1] 20620


List列表其他相关操作

1.构造一个list

my.lst<-list(stud.id=3353,

                      stud.name="john",

                      stud.marks=c(14.3,12,15)) 

2. 索引

my.lst[[1]]

或者my.lst$stud.id

3. 扩展列表

my.lst$parents.names<-c("Anna","Mike")

4. 检查list成分个数

length(my.lst)

5. 剔除list成分

my.lst<-my.lst[-5]

6.合并list

other<-list(age=19,sex="male")

lst<-c(my.lst,other)

7. 将list中的所有元素转为向量元素

unlist(my.lst)




你可能感兴趣的:(R)