使用循环使第一列成为一组表中的rownames

时间:2017-03-29 15:27:14

标签: r loops

我正在尝试在R中编写我的第一个循环。我在R-studio的全局环境中加载了一个包含一组表的数据库。以下是一个表的示例。

Initial

我想让每个文件中的第一列的行名称如下:

Edited

我尝试过几个想法,但我没有运气。第一个代码:

        <script>
            $("#submitdata").submit(function()
            {
                var datefrom=document.getElementById( "datefrom" );
                var dateto=document.getElementById( "dateto" );
                var dropdown=document.getElementById( "dropdown" ).value;

                alert (dropdown);

                if (dropdown === "0") {
                    alert ("Please choose first!");
                } else if (dropdown === "1") {
                    $.ajax({
                        type: 'post',
                        url: 'showData.php',
                        data: {
                            datefrom: datefrom,
                            dateto: dateto,
                            choice: dropdown
                        },
                        success: function () {
                            $('#inner').load('#inner');
                        }
                    });
                    return false;
                } else if (dropdown === "2") {
                } else if (dropdown === "3") {
                } else if (dropdown === "4") {
                }

            });
        </script>

第二段代码:

<form method="post" id="submitdata" name="submitdata">
                                <div class="row uniform">
                                    <div class="12u 12u$">
                                        <input type="text" name="datefrom" id="datefrom" value="" placeholder="From" />
                                    </div>
                                    <div class="12u 12u$">
                                        <input type="text" name="dateto" id="dateto" value="" placeholder="To" />
                                    </div>
                                    <div class="12u$">
                                        <div class="select-wrapper">
                                            <select name="dropdown" id="dropdown">
                                                <option value="0">- Choose -</option>
                                                <option value="1">1</option>
                                                <option value="2">2</option>
                                                <option value="3">3</option>
                                                <option value="4">4</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="12u$">
                                        <ul class="actions">
                                            <li><input type="submit" id="btnSubmit" value="Submit" class="special" /></li>
                                            <li><input type="reset" value="Reset" /></li>
                                        </ul>
                                    </div>
                                </div>
                            </form>

我确定它是一个简单的解决方案,我仍然是R的新手。有关如何使其发挥作用的任何想法?

1 个答案:

答案 0 :(得分:0)

您的第二次尝试实际上是正确的,但在更改行名称之前,您要删除要用于名称的列!

重要的是,您应该在取消选择第一行时使用drop = FALSE来保留数据框类型。 See what may happen and why to use that statement

获取全局环境中所有数据框列表的一种方法是检查哪些变量是数据框,并使用get函数按名称检索它。

  ## Logical vector of which variables from ls() are of type data.frame 
temp <- sapply(ls(), function(i) is.data.frame(get(i)))
  ## Combine them all in a list
tables <- lapply(names(temp)[temp],get)

tables ## Example of have
## [[1]]
##   a b d
## 1 9 3 a
## 2 8 4 b
## 
## [[2]]
##   b c
## 1 5 2
## 2 4 3
## 3 3 4
## 4 2 5

要获得我们想要的输出,只需稍微修改一下上面提到的代码。

for(i in 1:length(tables)){
    rownames(tables[[i]]) <- tables[[i]][,1]
    tables[[i]] <- tables[[i]][,-1,drop = FALSE]
}
tables ## Example of want
## [[1]]
##   b d
## 9 3 a
## 8 4 b
## 
## [[2]]
##   c
## 5 2
## 4 3
## 3 4
## 2 5