R循环数据帧并从每行创建一个向量

时间:2014-09-30 20:57:01

标签: r loops

R的新功能。我正在尝试从数据框中的每一行创建一个向量,并将该向量命名为数据框中的位置。样本数据:

 a <- read.table(text='keyword1     keyword2
  1     "hello"     "goodbye"
  2     "foo"     "y"', header=TRUE)

每一行都应该成为一个字符串,如:

name1 <- c("hello", "goodbye")
name2 <- c("foo", "y")

我正在思考这样的事情,但它并不存在:

for (i in 1:length(a)) {
name <- a[i,1];
names <- c(name, a[i,2]);

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

这是一种方法:

> rows <- sapply(1:2, function(i) strsplit(paste(a[i,1], a[i,2]), " "))
> names(rows) <- c("name1", "name2")
> list2env(rows, envir = .GlobalEnv)
# let's see the output:
> name1
[1] "hello"   "goodbye"
> name2
[1] "foo" "y"  

答案 1 :(得分:1)

这是另一个选择

foo <- function(i) sapply(unname(a), as.character)[i,]

list2env(
    setNames(Map(foo, 1:nrow(a)), gsub("keyword", "name", names(a))),
    .GlobalEnv
)

name1
# [1] "hello"   "goodbye"
name2
# [1] "foo" "y"