为数据框中的每一行创建一个新的列表变量,其中每个变量都分配给行名或第一列

时间:2017-11-12 22:09:58

标签: r

例如,我有一个包含40行和20列的data.frame,并希望创建100个分配给第一行名称的变量(字符串):

row_name_1 <- df[1, ]

有没有办法为所有100行编写循环来节省输入40行代码的麻烦?

我尝试过使用此代码:

Phoneme_Features.list <- setNames(split(Phoneme_Features,
          seq(nrow(Phoneme_Features))), rownames(Phoneme_Features)) 

具体的应用是能够根据第一个数据帧中的值搜索另一个数据帧。

我有2个数据框:Phoneme_Features和Phonetic_Dictionary(有130,000行)。音素特征是数据帧,其中每行对应于大约20个语音特征(例如,F =辅音= 1,元音= 0,阴唇= 1,牙齿= 1等)。 Phonetic_Dictionary包含130,000个单词以及相应的语音转录(例如语音F AH0 N EH1 T IH0 K S) 我想使用新变量替换另一个数据帧的值(存储为因子),以便我可以通过第一个数据框(Phoneme功能)中的功能搜索第二个数据帧中的项目。

我希望能够搜索Phonetic_Dictionary并返回第一列包含辅音值1的每个条目。换句话说,能够在字典中搜索具有初始辅音或最终高元音的所有条目,或者第一个数据帧Phoneme_Features中的任何其他特征。

2 个答案:

答案 0 :(得分:1)

您可以使用assign()paste0()以编程方式创建变量名称。

使用虹膜数据集的示例:

for(i in 1:nrow(iris)){
  assign(paste0('row_name_',i),iris[i,])
}

paste0()将行号i附加到字符串row_name_,然后assign()然后将新创建的变量名称分配给环境,值为{{ 1}}

答案 1 :(得分:0)

感谢大家的帮助。我能够通过使用得到我想要的东西:

for(i in 1:nrow(Phoneme_Features)){
assign(paste0(Phoneme_Features[i, ]), Phoneme_Features[i, ])}